我正在创建一个拖放上传器,我正在使用 base64 使用隐藏字段将数据发送到我的服务器。(文件将在稍后发送,而不是在删除后立即发送)。
测试小图像文件和文本文件效果很好,但是当我尝试 20MB zip 或 2MB WAV 时,这会变得不稳定。谷歌浏览器崩溃或显示空白输出框,firefox 挂起很长时间,最终显示 base64 字符串。IE 实际上只运行一次并以最快的速度显示字符串,但等待时间仍然无法接受。
我的代码效率低下还是其他原因?
这是我的代码:
<div id="drop_zone">Drop files here</div>
<input name="filebox" type="text" id="filebox" size="300">
<output id="list"></output>
<script>
function handleFileSelect(evt) {
evt.stopPropagation();
evt.preventDefault();
var filelist = evt.dataTransfer.files; // FileList object.
file = filelist[0];
var reader = new FileReader()
reader.onload = function(e) {
document.getElementById('filebox').value = e.target.result;
}
reader.readAsDataURL(file) //readAsdataURL
}
function handleDragOver(evt) {
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
}
var dropZone = document.getElementById('drop_zone');
dropZone.addEventListener('dragover', handleDragOver, false);
dropZone.addEventListener('drop', handleFileSelect, false);
</script>