我正在尝试创建一个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]我收到安全错误Security error" code: "1000
,您能否提供参考来源?
为什么我无法将new_input_file附加到新创建的表单[3]中,或者甚至将新克隆的new_input_file附加到旧表单中[(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);
应该保留文件。 (没有测试)