Javascript 从 Web 服务返回文件
Javascript return file from web service
我正在尝试使用javascript从Web服务下载文件。Web 服务以 JSON 字符串的形式返回数据,格式如下:
{
"status": "OK",
"encodedFile": "AAAAX3JlbHMvLnJlbHOtksFOwzAMhu99iij31d2QEEJNd0FIu01oPEBI3DZqE0eJB+XtiZAQDDHYgWOS358/W2m3i5/FM6bsKCi5rhspMBiyLgxKPh7uVzdy21VV+4Cz5pLJo4tZlKKQlRyZ4y1ANiN6nWuKGMpLAAAAX3JlbHMvLnJlbHOtksFOwzAMhu99iij31d2QEEJNd0FIu01oPEBI3DZqE0eJB+XtiZAQDDHYgWOS358/W2m3i5/FM6bsKCi5rhspMBiyLgxKPh7uVzdy21VV+4Cz5pLJo4tZlKKQlRyZ4y1ANiN6nWuKGMpL"
}
编码文件是来自 Web 服务的文件字节的 Base64 编码形式。Web 服务获取服务器中的文件,将文件转换为字节数组,然后使用 Base64 将字节数组编码为字符串,并以 JSON 格式返回响应,以便 javascript 获取字符串。获取字符串并对其进行解码(我获取文件的字节数)后,如何将其(字节数)作为文件下载返回?基本上,现在我有文件的字节数,我想将其返回为文件下载。
我正在使用jquery ajax来获取响应,获取"状态"并获取"编码文件"。任何帮助或建议将不胜感激。提前谢谢你。
首先,我们可以获取 Base64 编码的 blob 并对其进行解码。然后,我们获取生成的字符串,将其强制转换为无符号的 8 位字节数组(应该是),并从字节创建一个 blob。最后,我们为此 Blob 创建一个 URL,并为其设置 window.location(尽管你可能希望在单独的选项卡中打开 Blob)。
var data = atob("AAAAX3JlbHMvLnJlbHOtksFOwzAMhu99iij31d2QEEJNd0FIu01oPEBI3DZqE0eJB+XtiZAQDDHYgWOS358/W2m3i5/FM6bsKCi5rhspMBiyLgxKPh7uVzdy21VV+4Cz5pLJo4tZlKKQlRyZ4y1ANiN6nWuKGMpLAAAAX3JlbHMvLnJlbHOtksFOwzAMhu99iij31d2QEEJNd0FIu01oPEBI3DZqE0eJB+XtiZAQDDHYgWOS358/W2m3i5/FM6bsKCi5rhspMBiyLgxKPh7uVzdy21VV+4Cz5pLJo4tZlKKQlRyZ4y1ANiN6nWuKGMpL")
var bytes = new Array(data.length);
for (var i = 0; i < data.length; i++) {
bytes[i] = data.charCodeAt(i);
}
bytes = new Uint8Array(bytes);
var blob = new Blob([bytes]);
window.location = URL.createObjectURL(blob);
相关文章:
- CKFinder 3为所选文件返回错误的URL
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- Ajax调用返回当前html页面,而不是请求的文件
- 使用ajax上传的文件返回错误,但使用c#在asp.net的服务器端正常提交的文件
- 为什么我的get-requesttoserver.js返回离子云9上的实际文件
- 无法在ajax调用中发布绝对文件路径-无论我做什么,它都会返回斜杠
- 当尝试使用ajax读取文件时,变量返回undefined
- 在 Node.JS 中,如何从单独的.js文件中返回整个对象
- 从另一个文件访问函数的返回值
- 从服务器返回exe文件,并通过浏览器在客户端下载
- php文件上传返回文件和文件路径的有效性
- 我的 gulp 插件带有 through2 以奇怪的类似 XML 格式返回文件
- Javascript 从 Web 服务返回文件
- 如何实现Play2 API服务器通过Ajax返回文件
- 从webservice返回文件路径,并在新窗口中打开它
- 我想使用node js返回文件的内容
- 是否存在从POST字符串返回文件的Web服务
- 脚本以字符串形式返回文件
- ASP.NET MVC 返回文件结果,其中包含要在客户端处理的其他数据
- 使用Javascript返回文件夹+文件