Javascript 如何在前端上传临时磁贴并在其浏览器html div元素上查看
我想上传一个临时文本文件,比如前端的“.json”文件 然后在当前窗口html的div元素中查看它 假设html正文有两个div 左div有一个带有上载按钮的表单,用于上载文件 右div显示上传文件后的文件内容 我不想向任何服务器发出任何请求。 我只需要一个前端脚本来上传一个文件并显示在它的选项卡窗口中 可能吗?怎么做?Javascript 如何在前端上传临时磁贴并在其浏览器html div元素上查看,javascript,jquery,html,file-upload,Javascript,Jquery,Html,File Upload,我想上传一个临时文本文件,比如前端的“.json”文件 然后在当前窗口html的div元素中查看它 假设html正文有两个div 左div有一个带有上载按钮的表单,用于上载文件 右div显示上传文件后的文件内容 我不想向任何服务器发出任何请求。 我只需要一个前端脚本来上传一个文件并显示在它的选项卡窗口中 可能吗?怎么做? <body> <input id="File" type="file" /> <input id="Button" type="b
<body>
<input id="File" type="file" />
<input id="Button" type="button" value="button" />
<div id="container"></div>
<script>
var input = document.getElementById('File');
var button = document.getElementById('Button');
var container = document.getElementById('container');
button.onclick = function () {
var reader = new FileReader();
reader.onload = function () {
container.innerHTML = reader.result;
}
input.files.length > 0 && reader.readAsText(input.files[0]);
}
</script>
</body>
var input=document.getElementById('File');
var button=document.getElementById('button');
var container=document.getElementById('container');
button.onclick=函数(){
var reader=new FileReader();
reader.onload=函数(){
container.innerHTML=reader.result;
}
input.files.length>0&&reader.readAsText(input.files[0]);
}
Javascript
参考文献:1.
2.
限制:此代码只能显示那些可以使用
readAsText
的文件。下面是一个使用FileReader.readAsBinaryString
的示例。
它来自一个允许通过canvas元素离线修改图像的应用程序,而无需使用服务器。我发现图形算法在JS中原型化要比C/ASM快得多——平台独立性和零编译时间
通常,必须从服务器(本地主机或远程主机)获取映像才能通过SameOrigin策略
错误检查是最小的-即,您可以选择文本/视频/任何文件,代码仍将尝试加载该文件,并将其内容设置为用于为图像元素构造dataURI的数据
<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded()
{
byId('mFileInput').addEventListener('change', onFileChosen, false);
}
// fileVar is an object as returned by <input type='file'>
// imgElem is an <img> element - can be on/off screen (doesn't need to be added to the DOM)
function loadImgFromFile(fileVar, imgElem)
{
var fileReader = new FileReader();
fileReader.onload = onFileLoaded;
fileReader.readAsBinaryString(fileVar);
function onFileLoaded(fileLoadedEvent)
{
var result,data;
data = fileLoadedEvent.target.result;
result = "data:";
result += fileVar.type;
result += ";base64,";
result += btoa(data);
imgElem.src = result;
imgElem.origType = fileVar.type; // unnecessary for loading the image, used by a current project.
}
}
function onFileChosen(evt)
{
if (this.files.length != 0)
{
var tgtImg = byId('tgt');
var curFile = this.files[0];
loadImgFromFile(curFile, tgtImg);
}
}
</script>
<style>
</style>
</head>
<body>
<input id='mFileInput' type='file'/><br>
<img id='tgt' />
</body>
</html>
函数byId(e){returndocument.getElementById(e);}
window.addEventListener('load',onDocLoaded,false);
函数onDocLoaded()
{
byId('mFileInput')。addEventListener('change',onFileChosen,false);
}
//fileVar是由返回的对象
//imgElem是一个
Google->MDN filereader“上传”一词意味着将数据从客户端发送到服务器。但是,如果使用类型设置为file的输入元素,并且使用FileReader对象,则可以允许用户选择一个文件,然后在不使用服务器的情况下进行预览。请看这里:IE 10和11对readAsBinaryString()一无所知,最好使用readAsDataURL()。。因为您仍然在手动将二进制字符串转换为base64谢谢,我没有意识到IE仍然应该拥有发音错误的InternetExploder名称。我想我仍然可以尝试atob
,如果我确实需要二进制数据的话。
<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded()
{
byId('mFileInput').addEventListener('change', onFileChosen, false);
}
// fileVar is an object as returned by <input type='file'>
// imgElem is an <img> element - can be on/off screen (doesn't need to be added to the DOM)
function loadImgFromFile(fileVar, imgElem)
{
var fileReader = new FileReader();
fileReader.onload = onFileLoaded;
fileReader.readAsBinaryString(fileVar);
function onFileLoaded(fileLoadedEvent)
{
var result,data;
data = fileLoadedEvent.target.result;
result = "data:";
result += fileVar.type;
result += ";base64,";
result += btoa(data);
imgElem.src = result;
imgElem.origType = fileVar.type; // unnecessary for loading the image, used by a current project.
}
}
function onFileChosen(evt)
{
if (this.files.length != 0)
{
var tgtImg = byId('tgt');
var curFile = this.files[0];
loadImgFromFile(curFile, tgtImg);
}
}
</script>
<style>
</style>
</head>
<body>
<input id='mFileInput' type='file'/><br>
<img id='tgt' />
</body>
</html>