我想允许用户从他们的计算机上拖放(或选择)一个文件,然后用JavaScript将其加载到文本框中。
是否可以将带有JavaScript的本地文件加载到文本框中?如果是,那怎么办?
答案 0 :(得分:19)
我认为HTML5所需的一切都包含在github上的remy/html5demos中。
例如,我修改了http://html5demos.com/file-api以接受文本文件并在浏览器中显示它们。
请参阅jsfiddle。
修改强>
相关脚本:
// modified from http://html5demos.com/file-api
var holder = document.getElementById('holder'),
state = document.getElementById('status');
if (typeof window.FileReader === 'undefined') {
state.className = 'fail';
} else {
state.className = 'success';
state.innerHTML = 'File API & FileReader available';
}
holder.ondragover = function() {
this.className = 'hover';
return false;
};
holder.ondragend = function() {
this.className = '';
return false;
};
holder.ondrop = function(e) {
this.className = '';
e.preventDefault();
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function(event) {
console.log(event.target);
holder.innerText = event.target.result;
};
console.log(file);
reader.readAsText(file);
return false;
};
答案 1 :(得分:3)
查看HTML5 File API
:http://www.html5rocks.com/en/tutorials/file/dndfiles/
规范也有一个很好的例子来了解它是如何工作的:
答案 2 :(得分:1)
也许这会对你们中的大多数人有所帮助:
在可拖动目标(源元素)上触发的事件:
ondragstart - 当用户开始拖动元素时发生
ondrag - 当元素被拖动时发生
ondragend - 当用户完成拖动元素时发生
在放置目标上触发的事件:
ondragenter - 当被拖动的元素进入放置目标时发生
ondragover - 当拖动的元素在放置目标上方时发生
ondragleave - 当被拖动的元素离开放置目标时发生
ondrop - 当被拖动的元素被放置在放置目标上时发生