Jquery文件拖放给我一个“不安全的操作”错误

时间:2013-08-19 07:03:28

标签: javascript jquery

  

注意:

     

答案&下面的评论反映了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”属性。在没有收到此安全错误的情况下上传文件的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

错误是因为您尝试设置文件输入类型的值,由于安全原因,无法设置文件输入类型的值。

另请阅读this questionMDN