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

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

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

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

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

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

有没有办法指导浏览器将二进制文件作为base64或其他非二进制格式传输?

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

您似乎可以设置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服务器没有输入参数Content-Transfer-Encoding