通过 HTTP 发送文件的最佳方式是什么?

问题描述 投票:0回答:1

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

  • 将图像编码为 Base64 字符串并将其作为 JSON 发送(如

    {"image": "base64_encoded_image"}

  • 使用

    multipart/form
    请求并在
    multer

    等软件包的帮助下处理请求

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

node.js express http file-upload api-design
1个回答
2
投票

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

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

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

我建议您针对您的案例使用多部分/表单数据方法。

© www.soinside.com 2019 - 2024. All rights reserved.