带有多个文件上传的 ajaxForm 提交
ajaxForm submission with multiple file uploads
过去几天我一直在想如何使用 ajaxForm 插件上传多个文件,但没有成功。尽管我已经找到了一些总体上的示例,但它们要么没有太大帮助,要么显示的是单个文件上传,我设法使其能够正常工作,但不能处理多个文件。
这是html代码
<div id="upload-wrapper">
<div align="center">
<form action="driverLoads/fetchDrivers/personnelUploads/processupload.php" method="post" enctype="multipart/form-data" id="uploadForm">
<input name="FileInput[]" id="FileInput" type="file" multiple/>
<input type="submit" id="submit-btn" value="Upload" />
<img src="driverLoads/fetchDrivers/personnelUploads/images/ajax-loader.gif" id="loading-img" style="display:none;" alt="Please Wait"/>
</form>
<div id="progressbox" ><div id="progressbar"></div ><div id="statustxt">0%</div></div>
<div id="output"></div>
和javascript代码:
$(document).ready(function() {
$('#submit-btn').click(function(e) {
e.preventDefault();
$('#uploadForm').ajaxForm({
target: '#output', // target element(s) to be updated with server response
beforeSubmit: beforeSubmit, // before submission callback function
success: afterSuccess, // after submission callback
uploadProgress: OnProgress, //check on the upload progress
resetForm: true, // reset the form if upload is success
data:{driverid:driverid} //send the driverid as well
}).submit();
});
和php代码:
if(isset($_FILES["FileInput"])){
$UploadDirectory = $base_url . '/subSystems/drivers/driverLoads/fetchDrivers/personnelUploads/';
for($i = 0; $i < count($_FILES["FileInput"]['name']);$i++){
//check if this is an ajax request
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
die();
}
//Is file size is less than allowed size.
if($_FILES["FileInput"]["size"][$i] > 5242880) {
die("File size is too big!");
}
//allowed file type Server side check
switch(strtolower($_FILES['FileInput']['type'][$i]))
{
//allowed file types
//disabled till further notice
case 'image/png':
case 'image/gif':
case 'image/jpeg':
case 'image/pjpeg':
case 'text/plain':
case 'text/html': //html file
case 'application/x-zip-compressed':
case 'application/pdf':
case 'application/msword':
case 'application/vnd.ms-excel':
case 'video/mp4':
break;
default:
die('Unsupported File!'); //output error
}
if(move_uploaded_file($_FILES['FileInput']['tmp_name'][$i], $UploadDirectory.$_FILES['FileInput']['name'][$i] )){
die('Success! File Uploaded.');
}else{
die('Error uploading File!');
}
}
}else{
$error = codeToMessage($_FILES["FileInput"]["error"][$i]);
die('Something wrong with upload! Is "upload_max_filesize" set correctly?' . $error);
}
我认为这是要理解的问题的所有相关代码。当我上传一个文件时,代码再次正常工作。请注意,如果我上传代码也能正常工作,假设是为了争论 3 个文件,但如果只上传第一个 one.If 任何对此有更多经验的人请帮忙,因为我似乎无法发现错误.
提前谢谢你。
在您的 php 代码行中:
if(move_uploaded_file($_FILES['FileInput']['tmp_name'][$i], $UploadDirectory.$_FILES['FileInput']['name'][$i] )){
die('Success! File Uploaded.');
然后尝试删除行:
die('Success! File Uploaded.');
(或注释掉!)
有效吗?
过去几天我一直在想如何使用 ajaxForm 插件上传多个文件,但没有成功。尽管我已经找到了一些总体上的示例,但它们要么没有太大帮助,要么显示的是单个文件上传,我设法使其能够正常工作,但不能处理多个文件。
这是html代码
<div id="upload-wrapper">
<div align="center">
<form action="driverLoads/fetchDrivers/personnelUploads/processupload.php" method="post" enctype="multipart/form-data" id="uploadForm">
<input name="FileInput[]" id="FileInput" type="file" multiple/>
<input type="submit" id="submit-btn" value="Upload" />
<img src="driverLoads/fetchDrivers/personnelUploads/images/ajax-loader.gif" id="loading-img" style="display:none;" alt="Please Wait"/>
</form>
<div id="progressbox" ><div id="progressbar"></div ><div id="statustxt">0%</div></div>
<div id="output"></div>
和javascript代码:
$(document).ready(function() {
$('#submit-btn').click(function(e) {
e.preventDefault();
$('#uploadForm').ajaxForm({
target: '#output', // target element(s) to be updated with server response
beforeSubmit: beforeSubmit, // before submission callback function
success: afterSuccess, // after submission callback
uploadProgress: OnProgress, //check on the upload progress
resetForm: true, // reset the form if upload is success
data:{driverid:driverid} //send the driverid as well
}).submit();
});
和php代码:
if(isset($_FILES["FileInput"])){
$UploadDirectory = $base_url . '/subSystems/drivers/driverLoads/fetchDrivers/personnelUploads/';
for($i = 0; $i < count($_FILES["FileInput"]['name']);$i++){
//check if this is an ajax request
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
die();
}
//Is file size is less than allowed size.
if($_FILES["FileInput"]["size"][$i] > 5242880) {
die("File size is too big!");
}
//allowed file type Server side check
switch(strtolower($_FILES['FileInput']['type'][$i]))
{
//allowed file types
//disabled till further notice
case 'image/png':
case 'image/gif':
case 'image/jpeg':
case 'image/pjpeg':
case 'text/plain':
case 'text/html': //html file
case 'application/x-zip-compressed':
case 'application/pdf':
case 'application/msword':
case 'application/vnd.ms-excel':
case 'video/mp4':
break;
default:
die('Unsupported File!'); //output error
}
if(move_uploaded_file($_FILES['FileInput']['tmp_name'][$i], $UploadDirectory.$_FILES['FileInput']['name'][$i] )){
die('Success! File Uploaded.');
}else{
die('Error uploading File!');
}
}
}else{
$error = codeToMessage($_FILES["FileInput"]["error"][$i]);
die('Something wrong with upload! Is "upload_max_filesize" set correctly?' . $error);
}
我认为这是要理解的问题的所有相关代码。当我上传一个文件时,代码再次正常工作。请注意,如果我上传代码也能正常工作,假设是为了争论 3 个文件,但如果只上传第一个 one.If 任何对此有更多经验的人请帮忙,因为我似乎无法发现错误.
提前谢谢你。
在您的 php 代码行中:
if(move_uploaded_file($_FILES['FileInput']['tmp_name'][$i], $UploadDirectory.$_FILES['FileInput']['name'][$i] )){
die('Success! File Uploaded.');
然后尝试删除行:
die('Success! File Uploaded.');
(或注释掉!)
有效吗?