我正在编写一个注册表单,其中包含10个文本输入和5个文件输入。表单使用Jquery ajax将整个数据发布到服务器。我也使用FormData。 PHP是服务器端语言。
整个代码在localhost(XAMPP)上正常运行。但是当我上传到我的网络服务器时,php getimagesize()函数失败,错误:文件名不能为空。
HTML代码
<form name="drvregister" id="drvregister" action="api/driver" enctype="multipart/form-data" class="form-horizontal">
<div class="form-group">
<label for="firstname" class="col-lg-3 control-label">Full Name</label>
<div class="col-lg-4">
<input type="text" class="form-control" id="firstname" name="firstname" value="" placeholder="First Name" required="" title="Please enter your First Name">
</div>
<div class="col-lg-4">
<input type="text" class="form-control" id="lastname" name="lastname" value="" placeholder="Last Name" required="" title="Please enter your Last Name">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="emailid" class="col-lg-3 control-label">Email Address</label>
<div class="col-lg-6">
<input type="text" class="form-control" id="emailid" name="emailid" value="" placeholder="Email ID" required="" title="Please enter your Email ID">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="dob" class="col-lg-3 control-label">Date of Birth</label>
<div class="col-lg-4">
<input type="datetime" class="form-control datepicker" id="dob" name="dob" value="" placeholder="dd/mm/yyyy" required="" title="Please enter your Date of Birth">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="gender" class="col-lg-3 control-label">Gender</label>
<div class="col-lg-5">
<div class="radio">
<label>
<input type="radio" class="radio" id="gender" name="gender" value="male" required="" title="Please mention your Gender"> Male
</label>
</div>
<div class="radio">
<label>
<input type="radio" class="radio" id="gender" name="gender" value="female" required="" title="Please mention your Gender"> Female
</label>
</div>
<span class="help-block"></span>
</div>
</div>
<div class="form-group">
<label for="address" class="col-lg-3 control-label">Address</label>
<div class="col-lg-5">
<textarea class="form-control" rows="4" id="address" name="address" value="" placeholder="Address" required="" title="Please enter your Address"></textarea>
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="vehiclenumber" class="col-lg-3 control-label">Vehicle Reg. Number</label>
<div class="col-lg-4">
<input type="text" class="form-control" id="vehiclenumber" name="vehiclenumber" value="" placeholder="Vehicle Registration Number" required="" title="Please enter your vehicle registration number">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="licensenumber" class="col-lg-3 control-label">License Number</label>
<div class="col-lg-4">
<input type="text" class="form-control" id="licensenumber" name="licensenumber" value="" data-toggle="tooltip" data-placement="left" placeholder="License Number" required="" title="Please enter your License Number">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="handset" class="col-lg-3 control-label">Handset Model</label>
<div class="col-lg-4">
<input type="text" class="form-control" id="handset" name="handset" value="" data-toggle="tooltip" data-placement="left" placeholder="Handset Model" required="" title="Please enter your Handset Model">
</div>
<span class="help-block"></span>
</div>
<fieldset class="docup">
<legend class="docup">Upload Documents</legend>
<div class="form-group">
<label for="license" class="col-lg-3 control-label">License</label>
<div class="col-lg-7">
<input type="file" class="form-control file" accept="image/*" id="license" name="license" value="" placeholder="License" required="" title="Please Upload your License SoftCopy">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="pancard" class="col-lg-3 control-label">PAN Card</label>
<div class="col-lg-7">
<input type="file" class="form-control file" accept="image/*" id="pancard" name="pancard" value="" placeholder="PAN Card" required="" title="Please Upload your PAN Card SoftCopy">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="insurance" class="col-lg-3 control-label">Bike Insurance Papers</label>
<div class="col-lg-7">
<input type="file" class="form-control file" accept="image/*" id="insurance" name="insurance" value="" placeholder="Bike Insurance Papers" required="" title="Please Upload your Bike Insurance Papers SoftCopy">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="bikepic" class="col-lg-3 control-label">Picture of your Bike</label>
<div class="col-lg-7">
<input type="file" class="form-control file" accept="image/*" id="bikepic" name="bikepic" value="" placeholder="Picture of your Bike" required="" title="Please Upload Picture of your Bike">
</div>
<span class="help-block"></span>
</div>
<div class="form-group">
<label for="addressproof" class="col-lg-3 control-label">Address Proof</label>
<div class="col-lg-7">
<input type="file" class="form-control file" accept="image/*" id="addressproof" name="addressproof" value="" placeholder="Address Proof" required="" title="Please Upload your Address Proof SoftCopy">
</div>
<span class="help-block"></span>
</div>
</fieldset>
<div class="form-group">
<label id="captchaOperation" class="col-lg-3 control-label"></label>
<div class="col-lg-3">
<input type="text" class="form-control" name="captcha"/>
</div>
<span class="help-block"></span>
</div>
<div class="row">
<div class="col-md-8 form-group">
<label><input type="checkbox" name="agree" id="agree"> I Agree to terms and conditions</label>
<span class="help-block"></span>
</div>
</div>
<div class="row">
<div class="col-md-2 col-md-offset-2 form-group">
<button id="submit" type="submit" class="btn btn-success">Register</button>
</div>
<div class="col-md-2 col-md-offset-2 form-group">
<button id="reset" type="reset" class="btn btn-default">Reset</button>
</div>
</div>
</form>
Js Code
.on('success.form.bv', function(e) {
e.preventDefault();
$('#progress').modal({
backdrop: 'static',
keyboard: false
});
$('#progress').modal('show');
var $form = $(e.target);
var bv = $form.data('bootstrapValidator');
var formdata = new FormData(e.target);
$.ajax({
url: $form.attr('action'),
type: 'POST',
data: formdata,
async: false,
xhr: function() { // custom xhr
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) { // check if upload property exists
myXhr.upload.addEventListener('progress', updateProgress, false); // for handling the progress of the upload
}
return myXhr;
},
success: function(xml) {
var message = $(xml).find('message').text();
$('#returnmsg').html(message);
$('#progress').modal('hide');
$('#message').modal('show');
},
error: function(jqXHR, textStatus, errorThrown) {
var message = $(xml).find('error').text();
$('#returnmsg').html(message);
$('#progress').modal('hide');
$('#message').modal('show');
},
cache: false,
contentType: false,
processData: false
});
});
Php Code
public function registerdriver() {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$emailid = $_POST['emailid'];
$dob = $_POST['dob'];
$gender = $_POST['gender'];
$address = $_POST['address'];
$vehiclenumber = $_POST['vehiclenumber'];
$licensenumber = $_POST['licensenumber'];
$handset = $_POST['handset'];
$parts = explode('/', $dob);
$date = "$parts[2]-$parts[1]-$parts[0]";
$licensefile_ext = strrchr($_FILES["license"]["name"], '.');
$pancardfile_ext = strrchr($_FILES["pancard"]["name"], '.');
$insurancefile_ext = strrchr($_FILES["insurance"]["name"], '.');
$bikepicfile_ext = strrchr($_FILES["bikepic"]["name"], '.');
$addressprooffile_ext = strrchr($_FILES["addressproof"]["name"], '.');
$licensefile = $content_path . date("Y-m-d") . '/' . md5(basename($_FILES["license"]["name"])) . $licensefile_ext;
$pancardfile = $content_path . date("Y-m-d") . '/' . md5(basename($_FILES["pancard"]["name"])) . $pancardfile_ext;
$insurancefile = $content_path . date("Y-m-d") . '/' . md5(basename($_FILES["insurance"]["name"])) . $insurancefile_ext;
$bikepicfile = $content_path . date("Y-m-d") . '/' . md5(basename($_FILES["bikepic"]["name"])) . $bikepicfile_ext;
$addressprooffile = $content_path . date("Y-m-d") . '/' . md5(basename($_FILES["addressproof"]["name"])) . $addressprooffile_ext;
$this->verifyimage(); //Error Line
}
private function verifyimage() {
$imageflag = getimagesize($_FILES["license"]["tmp_name"]); //Function breaks here "Filename cannot be empty"
if ($imageflag === false)
$this->returnerror("Invalid Image");
$imageflag = getimagesize($_FILES["pancard"]["tmp_name"]);
if ($imageflag === false)
$this->returnerror("Invalid Image");
$imageflag = getimagesize($_FILES["insurance"]["tmp_name"]);
if ($imageflag === false)
$this->returnerror("Invalid Image");
$imageflag = getimagesize($_FILES["bikepic"]["tmp_name"]);
if ($imageflag === false)
$this->returnerror("Invalid Image");
$imageflag = getimagesize($_FILES["addressproof"]["tmp_name"]);
if ($imageflag === false)
$this->returnerror("Invalid Image");
}
printf($ _ FILES)提供以下输出
Array
(
[license] => Array
(
[name] => 603842_893248767384667_7569544565024956810_n.jpg
[type] =>
[tmp_name] =>
[error] => 6
[size] => 0
)
[pancard] => Array
(
[name] => 603842_893248767384667_7569544565024956810_n.jpg
[type] =>
[tmp_name] =>
[error] => 6
[size] => 0
)
[insurance] => Array
(
[name] => 603842_893248767384667_7569544565024956810_n.jpg
[type] =>
[tmp_name] =>
[error] => 6
[size] => 0
)
[bikepic] => Array
(
[name] => 603842_893248767384667_7569544565024956810_n.jpg
[type] =>
[tmp_name] =>
[error] => 6
[size] => 0
)
[addressproof] => Array
(
[name] => 603842_893248767384667_7569544565024956810_n.jpg
[type] =>
[tmp_name] =>
[error] => 6
[size] => 0
)
)