将任意格式的文件用BASE64编码后嵌入到单文件静态网页里面,浏览器打开

将任意格式的文件用BASE64编码后嵌入到单文件静态网页里面,浏览器打开会以下载链接的形式体现,用户点击链接后会弹出下载对话框下载这个文件,请提供符合以上要求的一个HTM... 将任意格式的文件用BASE64编码后嵌入到单文件静态网页里面,浏览器打开会以下载链接的形式体现,用户点击链接后会弹出下载对话框下载这个文件,请提供符合以上要求的一个HTML的例子 展开
 我来答
lieroping
2020-02-07
知道答主
回答量:15
采纳率:100%
帮助的人:5.8万
展开全部
如果不用后台,图片的话可以用canvas.toDataURL方法获得图片的base64字符串(取得的其实是图片的目前的显示数据流而不是源文件数据,故不涉及同源策略问题)。
但如果是任意文件,貌似无解,这里涉及同源策略问题,即一个(不受控)的网站,通过前端页面,通过js读取本地(非同源)任意文件,得到这个文件的内容。也就是说,你的要求其实可以看作,用任意网站,可以在未授权的情况下,读取你操作系统关键的配置文件,想想也是很不安全的事件对吧。这个功能应该需要浏览器插件授权支持。

============================================
不过我在网站上找到这个代码,以本地打开的方式运行是可以实现你要的功能的。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="在线Base64生成转换小工具,可以实现任意文件转Base64 Data-URI编码,文件往页面中一拖即可。" />
<meta name="keywords" content="base64, FileReader, readAsDataURL, 文件" />
<meta name="author" content="谢勇彬,XYB" />
<title>任意文件转base64-直接拖进来</title>
<style>
body { word-break: break-all; margin: 0 1em; min-height: 100vh; font-family: Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New", monospace; overflow: hidden;}
.empty::before{position: absolute; font-size: 50px; content: '任意文件\A拖到这里'; white-space: pre; left: 50%; top: 50%; transform: translate(-50%,-50%); color: gray;}
</style>
</head>
<body class="empty">
<script>
window.addEventListener("dragenter", function(event) { event.preventDefault(); }, false);
window.addEventListener("dragover", function(event) { event.preventDefault(); }, false);
window.addEventListener("drop", function(event) {
var reader = new FileReader();
reader.onload = function(e) {
document.body.insertAdjacentHTML("afterBegin", '<p>' + e.target.result + '</p>');
document.body.classList.remove('empty');
};
reader.readAsDataURL(event.dataTransfer.files[0]);
event.preventDefault();
}, false);
</script>

</body>
</html>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式