问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android端 file文件上传

发布网友 发布时间:2022-04-25 08:17

我来回答

1个回答

热心网友 时间:2023-11-08 14:13

  我们做web开发的时候几乎都是通过一个表单来实现上传。并且是post的方式。而且都必须要加个参数enctype = "multipart/form-data".然后再上传后台用各种框架里的插件之类的就可以接收了,并没有关心过这个文件具体是怎么传的。现在用android开发 没有那些框架了,所以不得不关心一下了。

  其实我们这种前后台的交互是用的HTTP协议。而http协议默认是传的字符串。所以我们上传文件的话要加enctype = "multipart/form-data"这个参数来说明我们这传的是文件不是字符串了。而我们做web开发的时候,浏览器是自动解析HTTP协议的。里面传的哪些东西我们不用管。只要记住几个参数就行。而我们要上传的文件报文是保存在请求的头文件里面的。下面就是上传文件头文件的格式:

  POST/logsys/home/uploadIspeedLog!doDefault.html HTTP/1.1
  Accept: text/plain, */*
  Accept-Language: zh-cn
  Host: 192.168.24.56
  Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2
  User-Agent: WinHttpClient
  Content-Length: 3693
  Connection: Keep-Alive
  -------------------------------7db372eb000e2
  Content-Disposition: form-data; name="file"; filename="kn.jpg"
  Content-Type: image/jpeg
  (此处省略jpeg文件二进制数据...)
  -------------------------------7db372eb000e2--
  这就是Http上传发送的文件格式。而我们要发送的时候必然要遵循这种格式来并且不能出一点差错包括每行后面的回车,下面一段文字是网上找的感觉写的比较精彩。(尊重原创:原文地址)

  红色字体部分就是协议的头。给服务器上传数据时,并非协议头每个字段都得说明,其中,content-type是必须的,它包括一个类似标志性质的名为boundary的标志,它可以是随便输入的字符串。对后面的具体内容也是必须的。它用来分辨一段内容的开始。Content-Length: 3693 ,这里的3693是要上传文件的总长度。绿色字体部分就是需要上传的数据,可以是文本,也可以是图片等。数据内容前面需要有Content-Disposition, Content-Type以及Content-Transfer-Encoding等说明字段。最后的紫色部分就是协议的结尾了。

  注意这一行:

  Content-Type: multipart/form-data; boundary=---------------------------7db372eb000e2

  根据 rfc1867, multipart/form-data是必须的.

  ---------------------------7db372eb000e2 是分隔符,分隔多个文件、表单项。其中b372eb000e2 是即时生成的一个数字,用以确保整个分隔符不会在文件或表单项的内容中出现。Form每个部分用分隔符分割,分隔符之前必须加上"--"着两个字符(即--{boundary})才能被http协议认为是Form的分隔符,表示结束的话用在正确的分隔符后面添加"--"表示结束。

  前面的 ---------------------------7d 是 IE 特有的标志,Mozila 为---------------------------71.

  每个分隔的数据的都可以用Content-Type来表示下面数据的类型,可以参考rfc1341

热心网友 时间:2023-11-08 14:13

  我们做web开发的时候几乎都是通过一个表单来实现上传。并且是post的方式。而且都必须要加个参数enctype = "multipart/form-data".然后再上传后台用各种框架里的插件之类的就可以接收了,并没有关心过这个文件具体是怎么传的。现在用android开发 没有那些框架了,所以不得不关心一下了。

  其实我们这种前后台的交互是用的HTTP协议。而http协议默认是传的字符串。所以我们上传文件的话要加enctype = "multipart/form-data"这个参数来说明我们这传的是文件不是字符串了。而我们做web开发的时候,浏览器是自动解析HTTP协议的。里面传的哪些东西我们不用管。只要记住几个参数就行。而我们要上传的文件报文是保存在请求的头文件里面的。下面就是上传文件头文件的格式:

  POST/logsys/home/uploadIspeedLog!doDefault.html HTTP/1.1
  Accept: text/plain, */*
  Accept-Language: zh-cn
  Host: 192.168.24.56
  Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2
  User-Agent: WinHttpClient
  Content-Length: 3693
  Connection: Keep-Alive
  -------------------------------7db372eb000e2
  Content-Disposition: form-data; name="file"; filename="kn.jpg"
  Content-Type: image/jpeg
  (此处省略jpeg文件二进制数据...)
  -------------------------------7db372eb000e2--
  这就是Http上传发送的文件格式。而我们要发送的时候必然要遵循这种格式来并且不能出一点差错包括每行后面的回车,下面一段文字是网上找的感觉写的比较精彩。(尊重原创:原文地址)

  红色字体部分就是协议的头。给服务器上传数据时,并非协议头每个字段都得说明,其中,content-type是必须的,它包括一个类似标志性质的名为boundary的标志,它可以是随便输入的字符串。对后面的具体内容也是必须的。它用来分辨一段内容的开始。Content-Length: 3693 ,这里的3693是要上传文件的总长度。绿色字体部分就是需要上传的数据,可以是文本,也可以是图片等。数据内容前面需要有Content-Disposition, Content-Type以及Content-Transfer-Encoding等说明字段。最后的紫色部分就是协议的结尾了。

  注意这一行:

  Content-Type: multipart/form-data; boundary=---------------------------7db372eb000e2

  根据 rfc1867, multipart/form-data是必须的.

  ---------------------------7db372eb000e2 是分隔符,分隔多个文件、表单项。其中b372eb000e2 是即时生成的一个数字,用以确保整个分隔符不会在文件或表单项的内容中出现。Form每个部分用分隔符分割,分隔符之前必须加上"--"着两个字符(即--{boundary})才能被http协议认为是Form的分隔符,表示结束的话用在正确的分隔符后面添加"--"表示结束。

  前面的 ---------------------------7d 是 IE 特有的标志,Mozila 为---------------------------71.

  每个分隔的数据的都可以用Content-Type来表示下面数据的类型,可以参考rfc1341
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 怎么样实现上传? 得到文件路径怎么使用file上传 ipadair3待机几分钟后按home键没有反应,必须按一下开机键在按home键才会唤醒屏幕,这是_问一问 ipad黑屏后为什么同时按Home+开机键就好了呢? ipad2能不能不按power键开机?比如充电时开机,wifi唤醒开机,插入外设时开机,按home键开机? ipad平板,锁屏关机或者称作死机,需要按开机键或者开机键加上home才可以,但是开机时候会出现白 如何看待男朋友手机里还保留交友app? APP不得因用户不提供个人信息拒绝服务!你对这项新规怎么看? - 信息提示 软件测试工具能不能详细介绍一下 notable软件看不懂 学习软件技术有哪些经典书籍必看 手机下载完软件不显示怎么办? 索尼电视KD-55X8000E怎么安装第三方软件看直播,新手必看 Xmind 究竟是一款怎样的软件,新手必看 新买的ipad,经常自动关机,需要开机键和HOME键一起按才能看到界面,怎么办? 易车APP太烦人了怎样不看它? 必看网怎么没了? 自媒体人必看,你必须掌握哪些软件? 手机自动安装搜狗浏览器和“不能不看”手机软件 如何用FileItem来实现文件上传 有关java上传和File以及FileInputStream的区别 如何获取file 文件上传是的参数 C#使用HTML文件中的file文件上传 (如何用C#代码接收上传的文件) php 用file上传比较大的文件时 找不到临时文件是为何? php怎么一个file上传多张图片??? 页面上有一个文件上传控件FileUpload1,旁边用一个按钮,点击按钮,如何... jQuery fileupload 多文件上传 文件上传 在file文件上传 点击取消的返回页面的是什么值 为什么ipad按开机键开不了机,而按开机键和HOME键二十秒左右就能开机? 广西南宁自考专科考试严不严? 2022年南宁自考本科和成考本科有什么区别?+广西启仕教育 南宁自考考试办公室在哪里?招生办在哪/?明白人请帮个忙。我先谢谢了 广西自考考试地点 南宁市直 指的是哪里? 关于广西的自考的事情 ipad黑屏后按开机+home有甚么影响 蝗虫是单细胞生物吗 蝗虫有哪些生物学习性 生物:蝗虫身体的头胸腹足各有什么生理功能?其他地方的资料也行。