表单默认情形下利用 application/x-www-form-urlencoded ,在multipart/form-data中Content-Type是这样的:

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

boundary是表示分隔,用于分隔多个文件。
格式是 -- 后面可以跟随一串随机数。

我自己写了一个Servlet,利用jsp表单提交,打印出request中的流,用于剖析格式。

jsp接受后台解析HTTP协定实现文件上传 RESTful API

JSP源码:

后台吸收:

输出打印:

剖析如果提交的内容是文件,那么格式如下

------WebKitFormBoundaryxHKqg3ljAsuAFWBOContent-Disposition: form-data; name="upfile"; filename="test.png"Content-Type: image/png(二进制内容省略...)------WebKitFormBoundaryxHKqg3ljAsuAFWBO

个中Content-Type是文件类型,这个是浏览器自己判断的。

如果提交的内容是表单字段,那么格式如下

------WebKitFormBoundaryxHKqg3ljAsuAFWBOContent-Disposition: form-data; name="note"字段内容------WebKitFormBoundaryxHKqg3ljAsuAFWBO

所有文件或字段的分隔用

------WebKitFormBoundaryxHKqg3ljAsuAFWBO

当实行到未尾,末了一个分隔要加上"–-"

------WebKitFormBoundaryxHKqg3ljAsuAFWBO--

当时自己实现时忽略掉这个--,导致代码一贯报错:org.apache.commons.fileupload.FileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

剖析完multipart/form-data的格式后,自己写代码就比较随意马虎了。

客户端发送

做事端吸收

源码下载:s3.engr-z.com/wp/2021/uploadfile.zip

该工具类可以用于JAVA或Android。

本文原是2016年写的,改换域名和博客后旧文章未迁移过来。
考虑到还有一定参考代价,特殊整合收录到本站。
旧链接:https://wangzhengzhen.com/523.html

除非注明,否则均为"攻城狮·正"原创文章,请注明出处。

本文链接:https://engr-z.com/408.html