PHP在我的根文件夹中的数据库和文件夹中上传

时间:2016-06-02 07:46:28

标签: php image mysqli upload

所以我试图在数据库中上传图像的文件名,图像本身将保存在根文件夹内的文件夹中。

在我的代码中,图像名称可以保存在数据库中,但图像本身不会保存在文件夹中。那是为什么?

这是我的代码:

<?php

include '../session.php';
require_once 'config.php';


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

    $img_dir = "updated_photo/";
    $target_file = $img_dir . basename($_FILES["image"]["name"]);
    $imageName = $_FILES["image"]["name"];
    $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
    $imageType = $_FILES["image"]["type"];

        if (substr($imageType, 0,5) == "image") {
            $query = "UPDATE `crew_info` SET `image_name` = ? WHERE `id` = ?";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, 'si', $imageName, $_POST['id']);
            mysqli_stmt_execute($stmt);
            $id = $_POST['id'];

            header("Location: ../admin/view_all_info.php?id=$id");

        }

        else {

            echo "Image not Uploaded!";

        }

}

?>

我的代码似乎有什么问题?

3 个答案:

答案 0 :(得分:1)

您只需获取文件的内容即可。忘记使用file_put_contents

放入目标文件夹
 $target_file = $img_dir . basename($_FILES["image"]["name"]);
 $imageName = $_FILES["image"]["name"];
 $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
// Write the contents back to the file
file_put_contents($target_file, $imageData);

您还可以使用 move_uploaded_file 将文件上传到新位置

答案 1 :(得分:0)

试试这个,我编辑了你的代码。

<?php

include '../session.php';
require_once 'config.php';


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

    $img_dir = "../updated_photo/";
    $target_file = $img_dir . basename($_FILES["image"]["name"]);
    $imageName = $_FILES["image"]["name"];
    $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
    $imageType = $_FILES["image"]["type"];

        if (substr($imageType, 0,5) == "image") {
            $query = "UPDATE `crew_info` SET `image_name` = ? WHERE `id` = ?";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, 'si', $imageName, $_POST['id']);
            mysqli_stmt_execute($stmt);
            file_put_contents($target_file, $imageData);
            $id = $_POST['id'];
            header("Location: ../admin/view_all_info.php?id=$id");

        }

        else {

            echo "Image not Uploaded!";

        }

}

?>

只需复制并粘贴即可。告诉它是否有效。

答案 2 :(得分:0)

<?php

include '../session.php';
require_once 'config.php';


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

    $img_dir = "updated_photo/";
    $target_file = $img_dir . basename($_FILES["image"]["name"]);
    $imageName = $_FILES["image"]["name"];
    $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
    $imageType = $_FILES["image"]["type"];

        if (substr($imageType, 0,5) == "image") {
            $query = "UPDATE `crew_info` SET `image_name` = ? WHERE `id` = ?";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, 'si', $imageName, $_POST['id']);
            mysqli_stmt_execute($stmt);
            $id = $_POST['id'];
            //remove
     if (file_exists($target_file))
    {
        $result = unlink($target_file);
        if (!$result)
        {
            //error, display error, 
            return false;
        }
    }
            //upload
             $result  =  move_uploaded_file($_FILES['image']['tmp_name'], $img_dir);

                if(!$result) 
                    {
                    //error upload
                     }

            header("Location: ../admin/view_all_info.php?id=$id");

        }

        else {

            echo "Image not Uploaded!";

        }

}

?>