HTTP multipart/form-data 是否提供可靠性保证?

时间:2021-01-28 07:31:07

标签: http http-post multipartform-data form-data reliability

我有 React 前端和 Flask 后端 Web 应用程序。在此网络应用程序中,我通过 HTTP multipart/form-data 从客户端将大型 CSV 文件上传到服务器。为了实现这一点,我在 <form encType='multipart/form-data'> 元素中获取文件信息,使用 <input type='file'>。然后我使用 axios.post 向服务器发出 POST 请求。

在 Flask 服务器端,我使用 request.files['file'] 访问文件并使用 file.save 保存文件。这按预期工作。文件传输成功。

我正在考虑在客户端和服务器端计算 MD5 校验和,以确保双方都有具有相同 MD5 哈希的文件。但是,这需要从磁盘中分块读取文件并计算 MD5。 (因为我正在处理大文件,所以不可能在内存中加载整个文件)。所以,我认为这有点低效。我想知道这种通过“HTTP multipart/form-data”的传输是否提供可靠性保证?如果是这样,我可以忽略MD5验证对吗?

如果不能保证可靠性,是否有什么好的方法可以确保双方拥有完全相同的文件副本?提前致谢。

1 个答案:

答案 0 :(得分:0)

HTTP 完整性与底层传输协议一样可靠,无论是 TCP(HTTP/1 和 2)还是 UDP(HTTP/3)。位可以跌倒并仍然产生有效的校验和。这个does happen

如果您想绝对确保收到的文件与上传者预期的文件相同,您需要自己添加校验和,例如使用 SHA 或 MD5。