通过 HTTP 发送文件的最佳方式是什么?
What is the best way to send files through HTTP?
我正在 node.js 的网络 api 和 express 上工作,我想让用户上传图片。
我的 api 使用 JSON 请求和响应,但在上传图片时我不知道哪个选项更好。我可以想到两个想法:
将图像编码为 base64 字符串并将它们作为 JSON(如 {"image": "base64_encoded_image"}
)
发送
使用multipart/form
请求并借助multer
等包处理请求
我一直在阅读一些与我的问题相关的文章和其他问题,但我仍在努力选择一种方法而不是另一种方法。编码图像并使用 JSON 发送它会使数据大小增加约 25%(这是我读过的内容)但使用 multipart 对我来说似乎很奇怪,因为我 api 上的所有其他端点都使用 JSON.
multipart/formdata 方法比 Base64 编码方法有一定优势。
使用 Base64 方法的首要缺点是数据大小增加了 30%,虽然这对于小文件来说可能并不重要,但如果您要发送大文件并将它们存储在存储器中,这肯定会很重要空格(会增加你的 cost/data-consumption )。像 multer 这样的包也为你提供了某些功能,比如检查文件类型(jpg、png 等)和设置文件大小限制等。而且它们很容易实现,网上有很多教程和指南。
此外,将图像转换为 Base64 字符串会增加用户计算机的计算开销,尤其是在文件很大的情况下。
我建议您针对您的情况使用 multipart/form-data 方法。
我正在 node.js 的网络 api 和 express 上工作,我想让用户上传图片。 我的 api 使用 JSON 请求和响应,但在上传图片时我不知道哪个选项更好。我可以想到两个想法:
将图像编码为 base64 字符串并将它们作为 JSON(如
发送{"image": "base64_encoded_image"}
)使用
等包处理请求multipart/form
请求并借助multer
我一直在阅读一些与我的问题相关的文章和其他问题,但我仍在努力选择一种方法而不是另一种方法。编码图像并使用 JSON 发送它会使数据大小增加约 25%(这是我读过的内容)但使用 multipart 对我来说似乎很奇怪,因为我 api 上的所有其他端点都使用 JSON.
multipart/formdata 方法比 Base64 编码方法有一定优势。
使用 Base64 方法的首要缺点是数据大小增加了 30%,虽然这对于小文件来说可能并不重要,但如果您要发送大文件并将它们存储在存储器中,这肯定会很重要空格(会增加你的 cost/data-consumption )。像 multer 这样的包也为你提供了某些功能,比如检查文件类型(jpg、png 等)和设置文件大小限制等。而且它们很容易实现,网上有很多教程和指南。
此外,将图像转换为 Base64 字符串会增加用户计算机的计算开销,尤其是在文件很大的情况下。
我建议您针对您的情况使用 multipart/form-data 方法。