我有一个有两个上传字段的表单。每个字段只允许上传一个文件,并且它们都具有适当的JavaScript验证。然后我来到了我的ajax函数中,我收集表单数据并发送给PHP。目前,我做这样的事情PHP处理文件上传
submitHandler: function (form) {
formData = new FormData(),
fileOne = $(form).find('[name="fileOne"]')[0].files,
fileTwo = $(form).find('[name="fileTwo"]')[0].files;
if(fileOne.length != 0) {
$.each(fileOne, function(i, file) {
formData.append('fileOne-' + i, file);
});
}
if(fileTwo.length != 0) {
$.each(fileTwo, function(i, file) {
formData.append('fileTwo-' + i, file);
});
}
$.ajax({
type: "POST",
url: "process.php",
dataType: "json",
data: formData,
mimeType: "multipart/form-data",
contentType: false,
processData: false
});
return false;
}
的foreach循环也有可能不是必要的,因为每个人只能有一个文件,但我不能找到一个办法做到这一点没有这个循环。
反正,所以这个数据被发送到我的PHP文件。这很重要,两个文件都不是必需的,只有一个是必需的。但是,如果他们也想上传2个文件,也可以上传。所以PHP可能会收到一个或两个文件。
在我的PHP中,我需要上传文件。目前我做这个
if (!empty($_FILES)) {
foreach($_FILES as $file) {
$upload = UPLOAD\Upload::factory('/temp');
$upload->file($file);
$upload->set_max_file_size(2);
$upload->set_allowed_mime_types(
array(
'image/bmp',
'image/jpeg',
'image/pjpeg',
'image/png',
'image/tiff',
'application/pdf'
)
);
$results = $upload->upload();
if(!$upload->get_errors()) {
array_push($fileNames, $results['full_path']);
}
else {
var_dump("Bad File");
}
}
} else {
$errors['file'] = '- Please upload a file';
}
我收集的文件名到一个数组,因为文件被上传后,我需要的文件,并把它们插入到文档中。
无论如何,我现在的主要问题是这样的。说$ _FILES包含这两个文件。它执行第一个循环,一切正常,文件被上传。然后执行第二个循环,上传出现问题,并返回错误。如果其中一个文件没有正确上传,我不想继续将其上传的文件放入文档中。如果其中一个文件失败,则应停止整个过程,并向用户返回错误。
我该如何检查上传的所有文件是否上传都没有问题?我明明已经告诉我,如果有在上传
$upload->get_errors()
一个错误,但因为这是在循环中,我不知道如何最好地利用它的下面。
无论如何,我的主要目标是这样的。文件被上传,我收集文件名。如果一切顺利,我将这些文件名传递给一个函数,以便将它们附加到文档中。这应该只会发生,虽然上传的一个或两个文件都正确上传。
希望我已经解释了我自己够好,真的想找一点指导如何最好地处理这个问题。
感谢
做一个'break'如果出现错误 –