【发布时间】:2014-10-01 22:39:26
【问题描述】:
我编写了一个 javascript 代码,可以很好地收集用户想要上传的每个文件。但是当我添加拖放文件选项时,事情发生了变化。 默认情况下,我有一个监控 input[type='file'] 更改事件处理程序的代码,一旦检测到它,就会执行操作并将文件发送到服务器进行上传。 但是由于拖放不会更改 input[type='file'] 值,并且由于安全原因我也不能以编程方式更改它,我很震惊如何发送在网站上拖放的文件。
这是我的一些代码:
document.getElementById('drop').addEventListener('drop', function (e) {
e = e || window.event;
e.preventDefault();
var dt = e.dataTransfer;
var files = dt.files;
for (var i=0; i<files.length; i++) {
var file = files[i];
var reader = new FileReader();
reader.readAsDataURL(file);
addEventHandler(reader, 'loadend', function(e, file) {
var bin = this.result;
var filename = file.name;
var filesize = (file.size/1048576).toFixed(2) + ' MB';
alert(' '+filename+' '+filesize+' '); // DEBUGGING ONLY
console.log("YEAY");
if(filecheck(filename)) { // Additional Function
step2(filesize, filename, bin); // Additional Function
$('.btn').click(function() { // Button to be clicked to start upload
$('#main_img_upload').submit(); // Form with that input[type='file']
});
}
else {
alert("Wrong File");
return false;
}
}.bindToEventHandler(file), false);
}
return false;
});
显然,它开始上传,但服务器没有收到任何内容,因为没有对表单进行任何更改。但我有所有必要的详细信息(文件名、文件大小等)
任何帮助将不胜感激。
【问题讨论】:
-
我什至没有尝试过拖放功能,但我的想法是,如果我没记错的话,你可以像 .ondrag(){input = get file info} 因为我不熟悉正确的语法,所以我可以这样表达。
-
本教程对我的类似项目帮助很大:html5doctor.com/drag-and-drop-to-server
-
@Alexdn 我已经掌握了有关该文件的所有信息。只需要知道如何将文件发送到服务器。我无法理解其他 jQuery 拖放插件正在使用的概念。就这么简单:)
-
查看该教程。有一个标题叫做:自动上传文件。这是一个非常简单明了的例子。
-
哦,真的吗?那么也许你可以看看上面的其他评论。我只是给出我的想法,顺便说一句,谢谢你澄清我呵呵:)
标签: javascript php jquery ajax