如何在动态创建的目录中保存图像?如何在DB中保存文件夹的路径?

时间:2018-02-14 07:53:51

标签: php html

我有上传文件夹,里面有动态,我正在根据图片ID创建另一个目录。

我正在创建目录,但图像未保存在其中!同时我想将文件夹的路径存储在数据库中。

if(isset($_POST['submit'])){

   $img_id=$_POST['img_id']; 

 /*  $imgpath= mkdir("uploads/".$img_id);
   $path1= "$imgpath/".$_FILES['c_photo']['name'][0];      
   move_uploaded_file($_FILES['c_photo']['name'][0], $path1);    
    $img_photo=$_FILES['c_photo']['name'][0]; 
*/

//此代码将图片保存在上传文件夹中,而不是 $ imgpath 目录

    $imgpath=mkdir("uploads/".$img_id);
   $path1="uploads/".$_FILES['c_photo']['name'][0];  
   move_uploaded_file($_FILES['c_photo']['tmp_name'][0],$path1);


    $query1 ="INSERT INTO img_tbl(`img_id`,`img_photo`) VALUES ('$img_id', '$path1')";


    if ($conn->query($query1) === TRUE) {

        header("location:show_img.php?");

    }
    else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close(); 


}


?>

<div class="col-sm-12">                                        
    <div class="col-sm-3">
     <label>Image id</label>
    </div>
    <div class="col-sm-9">
       <input class="form-control" type="text" name="img_id""/>
    </div>
</div>
<div class="col-sm-12">
   <div class="col-sm-3">
      <label>Upload photo</label>
   </div>
 <div class="col-sm-9">
    <input class="form-control" type="file" name="c_photo[]" />
 </div>
</div>


<div class="col-sm-5">
  <input class="form-control" type="submit" name="submit" value="Save"/>
</div>

请帮帮我。我是php新手。在此先感谢

3 个答案:

答案 0 :(得分:1)

move_uploaded_file()需要文件名和目的地。我猜你2.参数不好。您可以在此处详细了解:PHP move-uploaded-file

试试这个:

$folderPath = "uploads/".$img_id;
$isimgpath= mkdir(folderPath); 

if(isimgpath){
    move_uploaded_file($_FILES['c_photo']['tmp_name'], $folderPath);
}

我猜你的数据库插入可能会起作用,但它在它之前失败了,这就是为什么它不存在。 您可以将映像路径保存到db。您创建一个“$ path1”值,将其放入数据库插入。我看到它包含一个名称为的图像路径。

$query1 ="INSERT INTO img_tbl(`img_id`,`img_photo`) VALUES ('$img_id', ". $path1 .")";

尝试修改输入,如下所示:

<input class="form-control" type="file" name="c_photo" />

答案 1 :(得分:0)

您的上传代码存在问题tmp_name,它提供了来自服务器的临时存储路径

move_uploaded_file($_FILES['c_photo']['tmp_name'][0], $path1);

启用错误报告以显示错误How do I get PHP errors to display?

答案 2 :(得分:0)

假设表单具有正确的enctype属性(multipart/form-data)并且您正在上传单个文件而不是使用循环来上载多个文件,那么以下可能会有所帮助(不是虽然测试了)

<?php

    if( isset( $_POST['submit'], $_POST['img_id'] ) && !empty( $_FILES['c_photo'] ) ){

        /* for convenience, convert to an object to use Object notation */
        $obj=(object)$_FILES['c_photo'];
        $tmp=$obj->tmp_name;
        $name=$obj->name;
        $error=$obj->error;

        $img_id=$_POST['img_id']; /* peculiar knowing the ID before inserting into the database?? */

        $savepath=__DIR__ . '/uploads/' . $img_id;

        mkdir( $savepath, 0644 );/* create directory & set directory perms */

        $path = $savepath.'/'.$name; 

        $result = is_uploaded_file( $tmp ) & move_uploaded_file( $tmp, $path );
        if( $result ){
            $query ="INSERT INTO img_tbl( `img_id`, `img_photo` ) VALUES ('$img_id', '$name')";
            $result=$conn->query( $query );

            if( $result ){
                header( "location:show_img.php?img_id=".$img.id );
            } else {
                echo "Error: ";
            }
        }

        $conn->close(); 


    }
?>