使用ajax和php进行文件上传时出错

时间:2015-03-12 13:11:06

标签: javascript php jquery ajax

我正在编写一个注册表单,其中包含10个文本输入和5个文件输入。表单使用Jquery ajax将整个数据发布到服务器。我也使用FormData。 PHP是服务器端语言。

整个代码在localhost(XAMPP)上正常运行。但是当我上传到我的网络服务器时,php getimagesize()函数失败,错误:文件名不能为空

  • 本地主机上的Php版本:5.3
  • 网络服务器上的Php版本:5.2

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
        )

)

0 个答案:

没有答案