照片上传到服务器和数据库的问题

kulphzqa  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(451)

我在我的网站上传照片时遇到了问题。
我收到最后一条错误消息(“请选择要上载的文件”) $fileName = basename($_FILES["file"]["name"]); 行,并且没有插入到数据库或在服务器上上载。
我想知道是否有可能是一个问题,我的插入,因为我试图插入文件名,但也通过做'图片/'加上文件名的网址。所有的图片都要上传到images目录,所以我想确保url的前面总是有images/。
我不确定这里还会出什么问题,但也许我遗漏了什么
以下是表单和php脚本:

  1. <form action="uploadImage.php" method="post" enctype="multipart/form-data">
  2. <div class="form-group">
  3. <label for="formControl">Upload Image</label>
  4. <input type="file" class="form-control-file" id="formControl">
  5. <input type="submit" name="fileUpload">
  6. </div>
  7. </form>
  8. $statusMsg = '';
  9. // File upload path
  10. $targetDir = "images/";
  11. $fileName = basename($_FILES["file"]["name"]);
  12. $targetFilePath = $targetDir . $fileName;
  13. $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);
  14. if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
  15. // Allow certain file formats
  16. $allowTypes = array('jpg','png','jpeg','gif','pdf');
  17. if(in_array($fileType, $allowTypes)){
  18. // Upload file to server
  19. if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
  20. // Insert image file name into database
  21. $insert = $mysqlConn->query("INSERT into images (image_name, url) VALUES ('".$fileName."', 'images/".$fileName."'");
  22. if($insert){
  23. $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
  24. }else{
  25. $statusMsg = "File upload failed, please try again.";
  26. }
  27. }else{
  28. $statusMsg = "Sorry, there was an error uploading your file.";
  29. }
  30. }else{
  31. $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
  32. }
  33. }else{
  34. $statusMsg = 'Please select a file to upload.';
  35. }
  36. // Display status message
  37. echo $statusMsg;
yquaqz18

yquaqz181#

根据您的验证,您应该修改html标记,如下所示:

  1. <input type="file" name="file" class="form-control-file" id="formControl">
  2. <input type="submit" name="submit">

或者将验证条件更改为

  1. if (isset($_POST["fileUpload"]) && !empty($_FILES["file"]["name"])) {
  2. ...
  3. }

不管怎样, name="file" 文件输入元素需要。

相关问题