为了账号安全,请及时绑定邮箱和手机立即绑定

HTTP文件上传是如何工作的?

HTTP文件上传是如何工作的?

三国纷争 2019-06-18 10:22:38
HTTP文件上传是如何工作的?当我提交这样一个简单的表单并附上一个文件时:<form enctype="multipart/form-data" action="http://localhost:3000/upload?upload_progress_id=12344" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> Choose a file to upload: <input name="uploadedfile" type="file" /><br /> <input type="submit" value="Upload File" /> </form>它如何在内部发送文件?该文件是否作为HTTP主体的一部分作为数据发送?在此请求的标题中,我没有看到任何与文件名相关的内容。我只想知道在发送文件时HTTP的内部工作方式。
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

让我们看看当您选择一个文件并提交您的表单时会发生什么(为了简洁起见,我已经截断了标题):

POST /upload?upload_progress_id=12344 HTTP/1.1
Host: localhost:3000
Content-Length: 1325
Origin: http://localhost:3000
... other headers ...
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryePkpFF7tjBAqx29L

------WebKitFormBoundaryePkpFF7tjBAqx29L
Content-Disposition: form-data; name="MAX_FILE_SIZE"

100000
------WebKitFormBoundaryePkpFF7tjBAqx29L
Content-Disposition: form-data; name="uploadedfile"; filename="hello.o"
Content-Type: application/x-object

... contents of file goes here ...
------WebKitFormBoundaryePkpFF7tjBAqx29L--

表单参数(包括文件数据)不是对表单参数进行URL编码,而是作为请求正文中多部分文档中的节发送。

在上面的示例中,您可以看到输入MAX_FILE_SIZE具有在表单中设置的值,以及包含文件数据的节。文件名是Content-Disposition头球。

详情如下这里.


查看完整回答
反对 回复 2019-06-18
  • 2 回答
  • 0 关注
  • 475 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信