如何将二进制多部分formdata作为base64发送?

Dav*_*vid 7 html javascript jquery wicket

可能重复:
如何使用Javascript编码为Base64?

我有一个基于Java,Wicket和JQuery的Web应用程序,它具有使用户能够通过multipart/form-data上传文件(图像,pdf,rtf)的功能.

我们的Web安全基础设施会对所有http流量进行过滤,以获取可能的恶意内容,例如XSS攻击,SQL注入,缓冲区溢出等

过滤器不区分普通文本输入字段和文件数据,因此它从许多上载的二进制文件中获取误报,从而阻止上载这些文件.我无法改变安全策略.

似乎最好的解决方法是将文件数据进行base-64编码,以便与Content-Transfer-Encoding:base64一起发送,类似于电子邮件客户端所做的事情.

有没有办法指导浏览器将二进制转换为base64或其他非二进制格式?

如果没有,可以用一些JavaScript手动完成吗?

did*_*xga 4

看来你可以设置Content-Transfer-Encoding: base64
W3C 的引用:

如果该部分的值不符合默认(7BIT)编码,则可以对每个部分进行编码并提供“Content-Transfer-Encoding”标头

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

前提是您使用的 Java Web Server 不忽略参数Content-Transfer-Encoding

  • 或者你可以自己做base64编码,那里有很少的jQuery插件:https://github.com/carlo/jquery-base64 (3认同)
  • 我认为“Content-Transfer-Encoding:base64”的存在将向服务器表明浏览器确实已将二进制数据转换为 Base64 进行传输。它不是由开发人员设置的,而是浏览器响应文件输入标记的方式。但是如何让浏览器进行base64编码呢? (2认同)