背景
在有心课堂《自己动手写HTTP框架》课程中有下列课程:
通过自己写的HTTP框架实现将图片和文字等内容在一个接口中提交到后台。
分析
课程中上传图片相关代码如下图所示:
从上面的代码中可以看出,把图片放在了列表中,图片描述放在了request.content中。
通过对该方法运行时的网络请求抓包分析如下:
--7d4a6d158c9
Content-Disposition: form-data; name="data"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
stay4it
--7d4a6d158c9
Content-Disposition: form-data; name="file0"; filename="test.png"
Content-Type: image/png
返回结果抓包分析如下:
从上图Contents项中可以看到有两个关键字段,分别是data和file0字段。
这两个字段是怎么产生的呢?
通过查看《自己动手写HTTP框架》相关代码,有如下方法:
public static void upload(OutputStream out, String filePath) throws AppException {
String BOUNDARY = "7d4a6d158c9"; // 数据分隔线
DataOutputStream outStream = new DataOutputStream(out);
try {
outStream.writeBytes("--" + BOUNDARY + "\r\n");
outStream.writeBytes("Content-Disposition: form-data; name=\"file0\"; filename=\""
+ filePath.substring(filePath.lastIndexOf("/") + 1) + "\"" + "\r\n");
outStream.writeBytes("\r\n"