为什么我的图像文件在PHP中上传?

时间:2016-07-18 10:04:45

标签: php html mysql file-upload input-type-file

我希望我的用户能够将图像上传到他们的帐户(我的MySQL数据库)。但是,当我尝试对其进行编码并上传时,似乎该文件从未上传且为空。我在PHP设置中检查了最大上传大小等。在此先感谢!!

$data = "";
if(isset($_FILES["up"])) {
   $data = file_get_contents($_FILES['up']['tmp_name']);
   $data = base64_encode($data);
   $data = $connection->real_escape_string($data);
} else {
   echo '<div style="position:absolute;height:100px;top:0px;left:0px;
                     border-top-right-radius:20px;border-top-left-radius:20px;
                     width:100%;background:white;z-index:100;"
          >
            <font style="color:#BB0000;font-size:2.2vw;">'.$_FILES['up']['error'].'</font>
        </div>';
   die('');
}

我的HTML是:(并且表单正确提交)

 <input type="file" accept=".jpg,.png,.jpeg" name="up" id="up"/>

2 个答案:

答案 0 :(得分:0)

建议:将图像存储在目录中。

为什么不问DB?

  1. 对数据库的读/写总是慢于文件系统
  2. 您的数据库备份将变得更加耗时
  3. 所以,这是我的解决方案。

    步骤1:创建目录userPhotos

    第2步:创建表单

    <form action="upload.php" method="post" enctype="multipart/form-data">
     Select your profile picture:
     <input type="file" name="fileToUpload" id="fileToUpload">
     <input type="Upload" value="Upload Image" name="submit">
    </form>
    

    步骤3:创建一个名为upload.php的文件,用于处理文件上传。

    <?php
    $target_dir = "userPhotos/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $newfilename = ;//assign unique user ID
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        if (move_uploaded_file($_FILES["fileToUpload"][$newfilename.$imageFileType], $target_file)) {
          echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";$uploadOk = 1;
    } 
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
    }
    if($uploadOK==1){
     store the path of image in DB as "/userPhotos/".$newfilename
     echo "uploaded photo : <img src='userphotos/".$newfilename."'">
    }
    //to display the image fetch the path using user ID as put it in src of img tag. 
    ?>
    

    如果有人有更好的解决方案,请告诉我。谢谢,祝你好运。

答案 1 :(得分:0)

PHP代码

$data = "";
if(isset($_FILES["up"])) {
   $data = file_get_contents($_FILES['up']['tmp_name']);
   $data = base64_encode($data);
   $data = $connection->real_escape_string($data);
} else {
   echo '<div style="position:absolute;height:100px;top:0px;left:0px;
                     border-top-right-radius:20px;border-top-left-radius:20px;
                     width:100%;background:white;z-index:100;"
          >
            <font style="color:#BB0000;font-size:2.2vw;">'.$_FILES['up']['error'].'</font>
        </div>';
   die('');
}

HTML代码

<form method="POST" enctype="multipart/form-data">
<input type="file" accept=".jpg,.png,.jpeg" name="up" id="up"/>
</form>
相关问题