我正在开发一个允许用户编辑照片(在浏览器中)然后上传的网站。为了在浏览器中编辑图像,我使用了一些处理 base64 图像的 JavaScript 库。因此,要将图像 POST 到我的服务器,不能使用带有文件输入的简单表单。隐藏输入的值设置为已编辑图像的 base64 字符串,并已发布。请参阅以下简短示例。
显然,这是非常精简的,但它确实包含我遇到的问题。在 POST 一个 3MB 的动画 GIF 中,花费了 6.5 分钟。在此期间,我的计算机几乎完全冻结/无响应。(注意:这非常适合小图像,不过)
这可能是操作系统/浏览器问题(Ubuntu 上的最新 Google Chrome),但我对此表示怀疑。如果我将该文件输入放在表单中,并删除数据的 base64-ing(即 - 文件的标准 POST),它会在大约一秒钟内完成。
比较 6.5 分钟到 1 秒。我一定是做错了什么。我在这里做错了什么?我应该怎么做?我对网络开发相当陌生,所以我有点不知所措。我知道 base64 确实会导致大小增加 1.3 倍,但显然这里的上传时间不会以 1.3 倍缩放。我做了一点console.logging,和
var base64 = reader.result;
大约需要一秒钟。所以我认为瓶颈不存在。瓶颈必须在上传。但为什么?为什么表单文件输入比使用base64的表单隐藏输入快得多?
我为我冗长的帖子道歉,但我还是 Web 开发的新手,并不真正理解我的问题,因此在获取所有信息时很难简洁。
谢谢