Javascript 使用浏览器将通过http发送的base64编码数据保存为二进制
我正在编写一个REST服务,它允许接收二进制文件资源 我正在使用RESTEXPRESS,通过HTTP将二进制数据作为编码的base64字符串发送 我有一个标题组合,允许文件作为附件接收,但浏览器不会将base64解码回二进制 我的目标可能实现吗?通过http发送任意二进制文件格式,并让浏览器自动将base64解码为二进制并保存文件。或者让浏览器触发与文件扩展名关联的应用程序?我是否可以透明地执行此操作,还是必须使用javascript 下面列出了显示我使用的标题的代码Javascript 使用浏览器将通过http发送的base64编码数据保存为二进制,javascript,http,rest,browser,base64,Javascript,Http,Rest,Browser,Base64,我正在编写一个REST服务,它允许接收二进制文件资源 我正在使用RESTEXPRESS,通过HTTP将二进制数据作为编码的base64字符串发送 我有一个标题组合,允许文件作为附件接收,但浏览器不会将base64解码回二进制 我的目标可能实现吗?通过http发送任意二进制文件格式,并让浏览器自动将base64解码为二进制并保存文件。或者让浏览器触发与文件扩展名关联的应用程序?我是否可以透明地执行此操作,还是必须使用javascript 下面列出了显示我使用的标题的代码 public String
public String read(Request request, Response response) throws IOException
{
response.setIsSerialized(false);
response.setContentType("application/arbitraryBinaryFileFormat");
response.addHeader("Content-Transfer-Encoding", "Base64");
response.addHeader("Content-Encoding", "Base64");
response.addHeader("Content-Disposition","attachment; filename=r.arbitraryBinaryFileFormat");
String result = encodeFileToBase64Binary("/Users/xxx/Downloads/r.arbitraryBinaryFileFormat");
response.setBody(result);
return result;
}
Base64
不是有效的HTTP内容编码值。请参阅IANA上的
内容传输编码
是一个MIME头,它根本不与HTTP一起使用(请参阅)
简而言之,HTTP没有base64的概念,因此无法强制HTTP客户端自动解码base64编码的数据。您应该以原始二进制格式发送文件数据,而不是将其编码为base64。例如,您可以将字节[]
数组而不是字符串
传递给response.setBody()
对于基于文件名调用应用程序,使用内容配置:附件;filename=“…”
header是正确的解决方案。您应该将内容类型
设置为适合文件扩展名的真实合法值,或者改用应用程序/octet流