【问题标题】:What is the best way to send files through HTTP?通过 HTTP 发送文件的最佳方式是什么?
【发布时间】:2021-03-04 03:42:59
【问题描述】:

我正在使用 node.js 和 express 中的 web api,我想让用户上传图片。 我的 api 使用 JSON 请求和响应,但是在上传图像时,我不知道哪个选项更好。我能想到两个想法:

  • 将图像编码为 base64 字符串并将它们作为 JSON 发送(如 {"image": "base64_encoded_image"}

  • 使用multipart/form 请求并在multer 等包的帮助下处理请求

我一直在阅读与我的问题相关的一些文章和其他问题,但我仍在努力选择一种方法而不是另一种方法。编码图像并使用 JSON 发送它会使数据大小增加约 25%(这是我读过的),但使用 multipart 对我来说似乎很奇怪,因为我的 api 上的所有其他端点都使用 JSON。

【问题讨论】:

  • Not 对图像进行编码;只需将其作为 POST 或 PUT 的有效负载发送即可。

标签: node.js express http file-upload api-design


【解决方案1】:

multipart/formdata 方法比 Base64 编码方法具有一定的优势。

使用 Base64 方法的首要缺点是数据大小增加了 30%,虽然这对于小文件可能并不重要,但如果您发送大文件并将它们存储在存储空间中,这肯定很重要(将增加您的成本/数据消耗)。像 multer 这样的软件包还为您提供某些功能,例如 - 检查文件类型(jpg、png 等)和设置文件大小限制等。而且它们很容易实现,网上有很多教程和指南。

此外,将图像转换为 Base64 字符串会增加用户机器上的计算开销,尤其是在文件很大的情况下。

我建议您针对您的案例使用 multipart/form-data 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多