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

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的内部工作方式。


三国纷争
浏览 476回答 2
2回答

肥皂起泡泡

让我们看看当您选择一个文件并提交您的表单时会发生什么(为了简洁起见,我已经截断了标题):POST&nbsp;/upload?upload_progress_id=12344&nbsp;HTTP/1.1 Host:&nbsp;localhost:3000 Content-Length:&nbsp;1325 Origin:&nbsp;http://localhost:3000 ...&nbsp;other&nbsp;headers&nbsp;... Content-Type:&nbsp;multipart/form-data;&nbsp;boundary=----WebKitFormBoundaryePkpFF7tjBAqx29L ------WebKitFormBoundaryePkpFF7tjBAqx29L Content-Disposition:&nbsp;form-data;&nbsp;name="MAX_FILE_SIZE" 100000 ------WebKitFormBoundaryePkpFF7tjBAqx29L Content-Disposition:&nbsp;form-data;&nbsp;name="uploadedfile";&nbsp;filename="hello.o" Content-Type:&nbsp;application/x-object ...&nbsp;contents&nbsp;of&nbsp;file&nbsp;goes&nbsp;here&nbsp;... ------WebKitFormBoundaryePkpFF7tjBAqx29L--表单参数(包括文件数据)不是对表单参数进行URL编码,而是作为请求正文中多部分文档中的节发送。在上面的示例中,您可以看到输入MAX_FILE_SIZE具有在表单中设置的值,以及包含文件数据的节。文件名是Content-Disposition头球。详情如下这里.
打开App,查看更多内容
随时随地看视频慕课网APP