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

Php 如何将图像保存在动态创建的目录中?如何在DB中保存文件夹的路径?,php,html,Php,Html,我有一个uploads文件夹,在里面,我根据图像id动态地创建另一个目录 我正在创建目录,但图像没有保存在其中!同时,我想在数据库中存储文件夹的路径 if(isset($_POST['submit'])){ $img_id=$_POST['img_id']; /* $imgpath= mkdir("uploads/".$img_id); $path1= "$imgpath/".$_FILES['c_photo']['name'][0]; move_uplo

我有一个uploads文件夹,在里面,我根据图像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]; 
*/
//这段代码将图像保存在uploads文件夹中,而不是$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新手。提前感谢

您对上载代码有问题,应该是tmp_名称,它提供了来自服务器的临时存储路径

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

启用错误报告以显示错误

假设表单具有正确的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(); 


    }
?>

移动上传的文件需要文件名和目标。我猜你2。参数不好。您可以在此处阅读更多信息:

试试这个:

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

if(isimgpath){
    move_uploaded_file($_FILES['c_photo']['tmp_name'], $folderPath);
}
我想您的DB插入可能会工作,但在它之前失败了,这就是为什么它不在。 您可以将图像路径保存到db。创建一个$path1值,将其放入DB Insert中。如我所见,它包含一个带有名称的图像路径

$query1 ="INSERT INTO img_tbl(`img_id`,`img_photo`) VALUES ('$img_id', ". $path1 .")";
尝试按如下方式修改输入:

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

你正在上传一个或多个文件吗?你在里面写了你的html吗?还是只创建一个目录…图像没有保存在DirectoryMe中。。mkdir的返回值是布尔值-不是实际路径。更改了上述代码它不适用于我..请指导是否有其他可能的方式图像未在动态创建的文件夹中移动..请帮助我编辑我的文本,检查它。尝试在某处回显$imgpath和$_文件['c_photo']['tmp_name']。如果这些值为空,那么这就是你的问题的另一个原因。哦,是的。mkdir返回true或false 1或0。这就是move_上传的_文件的问题。我修改了示例。folderpath目录是在uploads文件夹外创建的,在uploads文件夹内创建了一个名为createdbut的文件。它不是文件夹。它是其中的文件和图像。这是一个很小的错误。它创建的文件不是uploads文件夹内的文件夹。请给我一些时间来解决我的问题