Javascript 如何在前端上传临时磁贴并在其浏览器html 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

我想上传一个临时文本文件,比如前端的“.json”文件

然后在当前窗口html的div元素中查看它

假设html正文有两个div

左div有一个带有上载按钮的表单,用于上载文件 右div显示上传文件后的文件内容

我不想向任何服务器发出任何请求。 我只需要一个前端脚本来上传一个文件并显示在它的选项卡窗口中

可能吗?怎么做?


<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>