更新:以下是如何通过从kartik中的treeview小部件中的文件夹中删除文件来添加文件:
function allowDrop(event) {
event.preventDefault();
}
function drop(event) {
event.preventDefault();
var dropFiles = event.dataTransfer.files;
event.target.click();
setTimeout(function(){
var formData = new FormData();
$.each(dropFiles, function(i, file){
formData.append('Files[files][]',file); //Files[files][] is the key to making this work with kartik treeview widget
});
$.ajax({
url : '/files/upload-files',
type : 'POST',
data : formData,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success : function(data) {
// console.log(data);
}
});
}, 1000);
}
function highlightToggle(event) {
event.preventDefault();
event.target.classList.toggle("highlightDrop");
}
原始问题和疑问:
给定此代码创建的表单:
echo $form->field($modalModel, 'files[]')->fileInput(['multiple' => true]); ?>
创建一个这样的表单:
<input type="file" id="files-files" name="Files[files][]" multiple="">
并生成如下形式的formdata: (注意&#39; Files&#39;数组中的&#39;文件&#39;数组)
array(1) {
["Files"]=>
array(5) {
["name"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
string(15) "Skjermbilde.PNG"
}
}
["type"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
string(9) "image/png"
}
}
["tmp_name"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
string(18) "/run/tmp/phpOAvRyO"
}
}
["error"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
int(0)
}
}
["size"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
int(75933)
}
}
}
如何使用javascript生成完全相同的格式化数据? (没有形式)
这是我的尝试:
var formData = new FormData();
$.each(dropFiles, function(i, file){
formData.append('Files[]',file);
// formData.append('Files[]',file, file['name']);//no difference
// formData.append('Files[files[]]',file, file['name']);//no data submitted
});
和结果:
array(1) {
["Files"]=>
array(5) {
["name"]=>
array(1) {
[0]=>
string(16) "Skjermbilde1.PNG"
}
["type"]=>
array(1) {
[0]=>
string(9) "image/png"
}
["tmp_name"]=>
array(1) {
[0]=>
string(18) "/run/tmp/phpkwxGHp"
}
["error"]=>
array(1) {
[0]=>
int(0)
}
["size"]=>
array(1) {
[0]=>
int(74596)
}
}
formdata必须包含&#39;文件&#39; “文件”中的元素&#39;元素与Kartik Treeview文件上传类一起使用。
感谢您的帮助。
以下是使用表单上传多个文件时的样子:
["Files"]=>
array(5) {
["name"]=>
array(1) {
["files"]=>
array(2) {
[0]=>
string(16) "Skjermbilde1.PNG"
[1]=>
string(15) "Skjermbilde.PNG"
}
}
["type"]=>
array(1) {
["files"]=>
array(2) {
[0]=>
string(9) "image/png"
[1]=>
string(9) "image/png"
}
}
["tmp_name"]=>
array(1) {
["files"]=>
array(2) {
[0]=>
string(18) "/run/tmp/phpKPbssh"
[1]=>
string(18) "/run/tmp/phpBDLxn0"
}
}
["error"]=>
array(1) {
["files"]=>
array(2) {
[0]=>
int(0)
[1]=>
int(0)
}
}
["size"]=>
array(1) {
["files"]=>
array(2) {
[0]=>
int(74596)
[1]=>
int(75933)
}
}
}