为什么我的ajax文件上传器无法正常工作?

时间:2011-01-26 12:59:15

标签: javascript ajax dom file-upload

我正在尝试创建一个ajax文件上传模块。请查看以下代码段

//create the form for uploading the file the ajax file
FileUploader.prototype.createForm = function() {
    // create the new form
    var form = document.createElement('form');
    form.id = this.form_id;
    form.action = this.url;
    form.method = 'post';
    form.enctype = 'multipart/form-data';
    form.target = 'file_upload_iframe';

    // try to create a file type of input failed at [1]
    /* var input_file = document.createElement('input');
    input_file.type = 'file';
    input_file.name = this.name;
    input_file.value = this.file;  [1] */

    // try to clone the input file but failed to insert it to the old form[2] 
    // or the new form [3] either
    var input_file = document.getElementById('userfile');
    var new_input_file = document.cloneNode(true);
    // document.getElementById('file_upload').appendChild(new_input_file); [2]
    new_input_file.id = ''; 

    form.appendChild(new_input_file); // [3]
    document.body.appendChild(form);
    return form;
};
  1. 为什么在地方[1]我收到安全错误Security error" code: "1000,您能否提供参考来源?

  2. 为什么我无法将new_input_file附加到新创建的表单[3]中,或者甚至将新克隆的new_input_file附加到旧表单中[(2))?

  3. 感谢。

2 个答案:

答案 0 :(得分:0)

你不能用jquery来操纵DOM吗?

var input = $('<input>'); // create your element
input.append($('#userfile').clone()); // append something

答案 1 :(得分:0)

你试图克隆整个文档,这没什么意义。你需要的是这样的代码:

var new_input_file = input_file.cloneNode(true);

无论如何,输入类型文件的value只是出于明显的安全原因而被读取,所以“克服”这个的唯一方法是将实际输入添加到新表单中:

form.appendChild(input_file);

应该保留文件。 (没有测试)