注意:
答案&下面的评论反映了2009年遗留浏览器的状态。现在,您可以在2017年使用JavaScript动态/编程地设置文件输入元素的值。
有关详细信息和演示,请参阅此问题的答案:
How to set file input value programatically (i.e.: when drag-dropping files)?
我正在尝试实施一个拖拉机删除使用Jquery上传图像的功能。
这是我的代码:
upload.html
<form id ="image_upload_form" action="" method="post" enctype="multipart/form-data">
<input id="id_image" type="file" name="image">
<input type="submit" value="Upload" />
</form>
<div id="drop_field"></div>
image_upload.js
$(document).ready(function() {
var drop_field = $("#drop_field");
drop_field.bind('dragover', file_drag_over);
drop_field.bind('drop', file_select);
});
function file_select(event) {
event.stopPropagation();
event.preventDefault();
var file = event.originalEvent.dataTransfer.files [0];
$("#id_image").val(file);
}
function file_drag_over(event) {
event.stopPropagation();
event.preventDefault();
event.originalEvent.dataTransfer.dropEffect = "copy";
}
一切正常,除非我将图像文件拖放到字段上时,它会给我一个安全错误:
SecurityError: The operation is insecure.
this.value = val;
我想这种情况正在发生,因为我正在尝试修改文件输入字段的“value”属性。在没有收到此安全错误的情况下上传文件的正确方法是什么?
谢谢!