PHP$\u文件未使用所有文件输入
我必须修补一个PHP邮件解析器。问题是,PHP$\u文件未使用所有文件输入,php,ajax,wordpress,file,Php,Ajax,Wordpress,File,我必须修补一个PHP邮件解析器。问题是,$\u FILES变量只管理第一个文件输入。按照设置方式,输入如下所示: 。 问题是,下一个输入是input,与名称递增的位置相同,如: 循环$\u文件时,这是当前逻辑: foreach($_FILES as $input) { ... } 在这种情况下,$\u文件只有文件,而第二个文件输入被视为文本,其值为C:\\fakepath\\{filename} 如果不使用像这样的单一输入名称,我如何实现这一点 编辑: $\u文件的var\u dump
$\u FILES
变量只管理第一个文件输入。按照设置方式,输入如下所示:
。
问题是,下一个输入是input,与名称递增的位置相同,如:
循环$\u文件时,这是当前逻辑:
foreach($_FILES as $input) {
...
}
在这种情况下,$\u文件
只有
文件,而第二个文件输入被视为文本,其值为C:\\fakepath\\
{filename}
如果不使用像
这样的单一输入名称,我如何实现这一点
编辑:
$\u文件的var\u dump
产生以下结果:
array(1) {
["files"]=>
array(5) {
["name"]=>
array(1) {
[0]=>
string(22) "Checklist-template.pdf"
}
["type"]=>
array(1) {
[0]=>
string(15) "application/pdf"
}
["tmp_name"]=>
array(1) {
[0]=>
string(14) "/tmp/phpZxkSFz"
}
["error"]=>
array(1) {
[0]=>
int(0)
}
["size"]=>
array(1) {
[0]=>
int(115033)
}
}
}
编辑#2
添加操作(用于前端和后端):
执行数据的PHP:
function spForm_submit(){
if(!(is_array($_POST) && defined('DOING_AJAX') && DOING_AJAX)){
return;
}
var_dump( $_FILES );
die();
}
带有AJAX调用的JS:
$('.sp-form .btn-submit').unbind('click').bind('click', function(e){
e.preventDefault();
e.stopPropagation();
$('input[type="hidden"]', form).each(function(){
data[$(this).attr('name')] = $(this).val();
});
var fd = new FormData(),
file_inputs = $('input[type="file"]', form);
$.each($(file_inputs), function(i, obj) {
$.each(obj.files,function(j,file){
fd.append('files[' + j + ']', file);
});
});
function appendFormdata(FormData, data, name, cback){
name = name || '';
if (typeof data === 'object'){
$.each(data, function(index, value){
if (name === ''){
appendFormdata(FormData, value, index, cback);
} else {
appendFormdata(FormData, value, name + '['+index+']', cback);
}
});
} else {
FormData.append(name, data);
}
}
appendFormdata(fd, {form: data}, null);
fd.append( 'action', 'sp_form_submit' );
$.ajax({
url : window.forms_cback, // AJAX URL
type : "POST",
data : fd,
contentType : false,
processData : false,
dataType : "json",
success : function(response) {
// removed for the purpose of the post
}
});
});
以及$\u文件
数组的输出:
array(1) {
["files"]=>
array(5) {
["name"]=>
array(1) {
[0]=>
string(22) "Checklist-template.pdf"
}
["type"]=>
array(1) {
[0]=>
string(15) "application/pdf"
}
["tmp_name"]=>
array(1) {
[0]=>
string(14) "/tmp/phpZxkSFz"
}
["error"]=>
array(1) {
[0]=>
int(0)
}
["size"]=>
array(1) {
[0]=>
int(115033)
}
}
}
正如Barmar所指出的,我的问题不在我的$\u文件
数组中,而是我的FileData操作中的一个输入错误
你打错了。在fd.append中('files['+j+']',file)
变量应该是i
,而不是j
它应该有所有的文件输入。你能发布var\u dump($\u文件)
@Barmar我已经将var\u dump添加到了问题中,这是
而不是
的dump。看看你会看到的第一个答案,我相信它会有帮助。你有一个打字错误。在fd.append中('files['+j+']',file)
变量应该是i
,而不是j
。
array(1) {
["files"]=>
array(5) {
["name"]=>
array(1) {
[0]=>
string(22) "Checklist-template.pdf"
}
["type"]=>
array(1) {
[0]=>
string(15) "application/pdf"
}
["tmp_name"]=>
array(1) {
[0]=>
string(14) "/tmp/phpZxkSFz"
}
["error"]=>
array(1) {
[0]=>
int(0)
}
["size"]=>
array(1) {
[0]=>
int(115033)
}
}
}