javascript - 最好将图像文件作为数据 URI 或二进制形式数据从浏览器上传到服务器?

标签 javascript html file-upload multipartform-data data-uri

在我正在使用的网络应用程序中Cropit让用户上传并裁剪图像。然后我需要将这张图片上传到后端服务器。

Cropit 返回 Data URI format 中的裁剪图像(输入字符串)。

我的问题是:现在将裁剪后的图像上传到后端服务器的最佳方式是什么?

到目前为止,我已经找到了两个选择:

  1. 从客户端以简单字符串的形式发送数据 URI,然后在服务器上将其转换为二进制数据,并将图像保存到磁盘。

  2. 在客户端将数据 URI 转换为二进制并将其附加到 FormData输入,然后发送到服务器,并将图像保存到磁盘。

如果我理解正确的话,没有原生 JS 方法可以将数据 URI 作为 multipart/form-data 发送。这是正确的吗?

使用方法 1 或方法 2 更好(即性能更高/更安全)吗?或者最好用我没有提到的另一种方式来做?

谢谢!

最佳答案

最好的方法是通过 post 方法发送数据 uri

我发现最快最可靠的方法是将图像转换为数据 uri。

使用分段上传时,发送数据和编码正确值可能会出现问题,并且会变得一团糟。就我们目前拥有的资源而言,数据 URI 是最好的建议

编辑:根据您使用的服务器类型,使用分段上传可能是更明智的选择。例如,AWS lambda 可能只允许请求中包含 5mb 的数据。这意味着最好的选择是使用通过 S3 进行分段上传的预签名 URL,这应该通过前端 Web 部分进行处理。

本质上,正确的解决方案允许取决于您的架构。

关于javascript - 最好将图像文件作为数据 URI 或二进制形式数据从浏览器上传到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971281/

相关文章:

javascript - 在 fabric.js 中编写 latex 公式

html - 我该如何解决?卡出DIV

javascript - 在动态加载模板 AngularJS 中添加 JavaScript 逻辑

ruby-on-rails - 在 Rails 应用程序中上传视频

javascript - 防止在 knockout.js 中运行计算属性(dependentobservable)

javascript - 我们如何使用 html 页面访问移动设备摄像头和麦克风

javascript - jquery 将 ajax 响应和用户定义的变量返回给函数

javascript - 单击主体时关闭模态框

c# - 如何实例化 HttpPostedFile

jsf - 如何限制RichFaces 4丰富:fileUpload to single file upload?