我有一个reader.readAsDataURL(file)
编码为base64字符串的图像。
我也用过
var imageBlob = ImageDataUrl.substring(ImageDataUrl.indexOf(",") + 1);
删除data:image/png;base64
,部分。
现在我必须使用json请求发送base64字符串
var link = "http://localhost:9002/AppAPI/rest/app/uploadImage?image="+imageBlob;
。
但邮递员没有收到任何回复,我的猜测是base64字符串中的某些字符会影响Http请求网址。
请问有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
GET绝对不是上传图片时使用的正确方法。 GET must be both idempotent and safe(即可重复和只读,没有副作用)。事实上,RFC 7231 4.2.1明确警告安全方法执行基于查询字符串参数的副作用操作:
例如,它是 基于Web的内容编辑软件常用于在其中使用操作 查询参数,例如" page?do = delete"。如果这样的目的 资源是执行不安全的操作,然后资源所有者必须 使用安全设备访问该操作时禁用或禁止该操作 请求方法。
对于图像上传,您可能希望执行PUT,其中图像内容位于请求正文中,而不是查询字符串(因此无需对其进行base64编码)。将图像内容放在查询字符串中不太可能正常工作。大多数服务器对URI长度施加限制,除了最小的base64编码图像之外,几乎肯定会超过这个限制。根据{{3}},当URI太长时,服务器必须向客户端发送414响应,但如果有不合规的服务器忽略该服务器,我不会感到惊讶要求。
您可能需要转义base64编码字符串末尾的=符号,但我建议完全删除base64编码的查询字符串参数。