Javascript如何将Base 64 url转换为文件?
Posted
技术标签:
【中文标题】Javascript如何将Base 64 url转换为文件?【英文标题】:Javascript How to convert Base 64 url to file? 【发布时间】:2020-10-16 14:20:36 【问题描述】:我正在从数据库中检索文件数据,我需要发送到前端(我的前端有下载操作来下载文件)如何将这些类型的 url 转换为文件。我希望它可以用于任何文件类型(doc、txt、jpg、pdf、zip .....)
"data:text/plain;charset=utf-8;base64,MzQuNjIzNjU..................."
这是我的实现。它适用于 txt,但由于某些原因,它不适用于 jpg 和其他文件类型。任何人都可以帮我解决这个问题吗? (我认为可能是编码或解码问题)谢谢:)
let mime = file.url.split(',')[0].split(':')[1].split(';')[0];
console.log(mime);
let content = unescape(encodeURIComponent(file.url.split(',')[1]));
content = Buffer.from(content, 'base64').toString();
console.log(content);
let temp = mime + ";charset=UTF-8";
res.set('Content-Type', temp);
res.set('Content-Disposition','attachment; filename=' + file.name );
res.send(content);
【问题讨论】:
【参考方案1】:试试下面希望这会奏效:-
//return a promise that resolves with a File instance
function urltoFile(url, filename, mimeType)
return (fetch(url)
.then(function(res)return res.arrayBuffer();)
.then(function(buf)return new File([buf], filename,type:mimeType);)
);
//Usage example:
urltoFile('data:text/plain;base64,aGVsbG8gd29ybGQ=', 'hello.txt','text/plain')
.then(function(file) console.log(file););
【讨论】:
【参考方案2】:您可以使用content = new Buffer(content, 'base64')
如果你想把它保存到一个文件中,你可以使用这个:
/* name is the name of the file you want to save your file in.*/
fs.writeFile(name , content, encoding: 'base64', function(err)
if (err) console.log('err', err);
console.log('success');
);
【讨论】:
以上是关于Javascript如何将Base 64 url转换为文件?的主要内容,如果未能解决你的问题,请参考以下文章
javascript Url 传参的坑,base64参数和url参数之间的转移
将 AWS KMS ECDSA_SHA_256 签名从 DER 编码的 ANS.1 格式转换为 JWT base64url 编码的 R || NodeJS/Javascript 中的 S 格式