如何将 Base64 文件转换为 javascript 中的实际文件/原始文件并将其下载到客户端
How to convert Base64 File to the actual file / original file in javascript and download it to client
的问题有点令人困惑,我很抱歉,但我认为可以通过我的详细解释来澄清这一点。
我对保存/上传文件非常陌生。我最近能够上传图像并将其保存为base64
数据库(数据类型 = mediumblob
),并通过设置 <img src='base64_data_from_db' />
在浏览器中再次显示它。
现在谈谈我的实际问题。
我必须将任何类型的文件上传到数据库。保存后,用户必须能够通过单击链接/按钮(我使用链接)使用浏览器下载文件。我能够使用 base64 保存文件。
我现在遇到的问题是如何将base64字符串转换为实际/原始文件(如MS Word,文本文件,图像等)并将其下载给用户。
我删除了 base64 字符串的前缀,并使用 window.atob(str)
转换它。当我console.log(window.atob(str))
时,我可以以某种方式看到文件的内容,但我不知道如何下载它。
注意:我在保存时使用base64,因为我使用JSON保存它。我正在使用Java Spring Hibernate。我试图谷歌,但大多数时候我看到how to convert Base64 to image
...正如我之前所说,我已经在 <img src=''/>
中显示了图像。我也在阅读有关javascript FileReader的信息,但它需要一个Blob作为参数,而我有一个base64字符串。
我在下面有一个非常不完整的代码,因为我不知道下一步该怎么做......
// strBase64 -- The base64 string equivalent of the file
function convBase64ToFile(strBase64) {
var tmp = strBase64.split(","); // To remove the prefix
var converted = window.atob(tmp[1]); //
console.log(converted); // Displays the content of the actual file
}
请帮忙....
我已经解决了这个问题...我将 base64 字符串转换为 Blob,然后使用 URL.createObjectURL()
获取网址,然后打开一个新窗口,将 blob 的网址设置为窗口的网址。
function convBase64ToFile(strBase64) {
var tmp = strBase64.split(",");
var prefix = tmp[0];
var contentType = prefix.split(/[:;]+/)[1];
var byteCharacters = atob(tmp[1]);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], {type: contentType});
var blobUrl = URL.createObjectURL(blob);
window.open(blobUrl, "popup","width=1000,height=500,scrollbars=1,resizable=no," +
"toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0");
}
- markrwithlabel.js(第三方)原始文件链接断开
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- 如何在文件打开和调用图像区域选择时获取原始图像大小
- 如何在angular js中从github获取原始自述文件后将其转换为html格式的文档
- 保存对“;contentEditable;部分返回到原始HTML文件
- 如何将 Base64 文件转换为 javascript 中的实际文件/原始文件并将其下载到客户端
- 咕噜咕噜的丑陋 - 替换原始文件
- 当我克隆文件输入时,克隆的输入不会保留上传的文件.原始输入确实如此
- 拖放以克隆原始文件
- 重定向后,如何显示来自原始文件的错误消息
- AJAX-PHP;XML-POST请求指向PHP文件,而不是停留在原始页面
- Chrome中的错误:“;原始文件://不允许访问控制允许原始文件;
- 编辑原始JQuery文件是否被认为是个坏主意
- 用javascript从文件原始数据创建文件
- PhantomJS中解析JSON平面文件的问题(请不要jquery,原始javascript)
- 我需要将一组文件从它们的原始位置复制到一个新文件夹
- 在不重命名原始文件的情况下吞下minify
- nodejs将原始图像数据写入jpeg文件
- 使源映射引用远程计算机上的原始文件
- DataTransferItem.getAsFile()返回的文件大小比原始文件大得多