上传图片无法按预期工作

时间:2015-06-10 18:36:41

标签: php

我有一个表单,用户可以填写多个输入字段,也可以上传图像。我最近添加了另一个输入字段,用户可以在其中上传其他图像。

<label for="photo">Facility Roof Plan:</label>                     
<input type="file" id="facilityroofplan" name="facilityroofplan" />

当用户提交表单时,它应该上传此图像,并将目录路径存储到数据库中。信息正在保存到我的数据库中,没有任何问题,但是当我检查图像是否上传时,它不在那里。

$directoryPath =  "../images/" . $selectedAssocAccount . "/" . $facilityID;    
//create the directory
mkdir($directoryPath, 0775);

//facility roof plan
if(!empty($_FILES["facilityroofplan"]["name"])){

    //directory path for the facility photo to reside in
    $facilityRoofPlan = "../images/". $selectedAssocAccount ."/" . $facilityID . "/" . basename($_FILES["facilityroofplan"]["name"]);                                   
    if($_FILES['facilityroofplan']['error'] == UPLOAD_ERR_OK) {
        $status_msg = '';
        $from = $_FILES["facilityroofplan"]["tmp_name"];
        $saved = save_facility_roof_plan($from, $facilityPhoto, $status_msg);
    } else{
        echo "Error uploading facility image.";             
    }

    //insert into photo table
    $photoQuery = "INSERT INTO facility_roof_plan (facility_id, roof_plan) VALUES ('$facilityID', '$facilityRoofPlan')";
    mysqli_query($dbc, $photoQuery)or die(mysqli_error($dbc)); 
}

这就是我的save_facility_roof_plan函数的样子:

function save_facility_roof_plan($from, $to, $status_msg) {
    // Check if file already exists
    if (file_exists($to)) {
        $status_msg = "Sorry, facility photo already exists.";
        return false;
    } 
    if (move_uploaded_file($from, $to)) {
        $status_msg = "The file ".basename($to)." has been uploaded.";
        return true;
    }
    $status_msg = "Sorry, there was an error uploading a photo.";
    return false;
}

我已在其他几个地方完成此操作,上传任何图片都没有问题。

我在哪里错了?

1 个答案:

答案 0 :(得分:2)

在您的代码中,您有

$saved = save_facility_roof_plan($from, $facilityPhoto, $status_msg);

但是您发布的内容中没有任何变量$facilityPhoto。我的猜测是,应该更改为$facilityRoofPlan,因为您设置了该路径但从未使用过它。

然后永远不会检查$saved变量的错误,这些错误可能会告诉您它为什么不起作用。

尝试:

$facilityRoofPlan = "../images/". $selectedAssocAccount ."/" . $facilityID . "/" . basename($_FILES["facilityroofplan"]["name"]);                                   
if($_FILES['facilityroofplan']['error'] == UPLOAD_ERR_OK) {
    $status_msg = '';
    $from = $_FILES["facilityroofplan"]["tmp_name"];
    $saved = save_facility_roof_plan($from, $facilityRoofPlan, $status_msg);
    if (!$saved) {
        echo "Error saving roof plan image: {$status_msg}";
    }
} else{
    echo "Error uploading facility image.";             
}