簡體   English   中英

PHP映像上傳腳本未上傳但未失敗

[英]PHP Image Upload Script Not Uploading But Not Failing

我正在嘗試將一些數據輸入數據庫並將圖像上傳到特定目錄。 我正在使用以下腳本,該腳本是此問題的最高投票答案的修改版本: 如何在使用PHP將映像上傳到服務器時,如何將文件名與其他信息一起存儲在數據庫中?

require($_SERVER['DOCUMENT_ROOT']."/settings/functions.php");
// This is the directory where images will be saved
$target = $_SERVER['DOCUMENT_ROOT']."/safetyarticles/images/";
$target = $target . basename( $_FILES['article_img']['name']);
date_default_timezone_set("America/Chicago");

// This gets all the other information from the form
$article_name = $_POST['article_title'];
$article_date = date("m/d/Y");
$article_creator = $_POST['article_creator'];
$article_views = "0";
$article_content = $_POST['article_content'];
$article_content_2 = $_POST['article_content_2'];
$article_img = ($_FILES['article_img']['name']);
$article_credit = $_POST['article_credit'];


// Connect to database
$conn = getConnected("safetyArticles");

// moves the image
if(move_uploaded_file($_FILES['article_img']['tmp_name'], $target))     
{
// if upload is a success query data into db 
mysqli_query($conn, "INSERT INTO currentArticles (article_name, article_date, article_creator, article_content, article_content_2, article_img, article_credit)
VALUES ('$article_name', '$article_date', '$article_creator', '$article_views', '$article_content', '$article_content_2', '$article_img', '$article_credit')") ;

echo "The file ". basename( $_FILES['article_img']['name']). " has been uploaded, and your information has been added to the directory";
}
else {
echo "Sorry, there was a problem uploading your file.";
}

由於getConnected()函數包含錯誤處理(如果連接失敗getConnected()我已成功連接到數據庫。

由於某些原因,我一直Sorry, there was a problem uploading your file. 腳本底部的錯誤。

我想念什么嗎? 我所做的就是在這里和那里更改一些次要行,例如數據庫的連接方式和變量。 我還移動了查詢,使其僅在文件上傳時才發生。

我不確定我缺少什么。

是否還可以修改當前腳本以將圖像重命名為$article_name的值? 例如,如果文章名稱是“ This Is The First Article”,則圖像將是this-is-the-first-article.jpg

我的HTML表單是:

<form method="post" action="http://example.com/admin/articleCreate.php" enctype='multipart/form-data'>
  <input type="text" name="article_title" placeholder="What Is The Name Of This Article?" id="article_title_input">
  <textarea name="article_content" placeholder="Write The Top Half Of Your Article Here." id="article_content_input"></textarea>
  <input type="file" name="article_img" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input">
  <textarea name="article_content_2" placeholder="Write The Bottom Half Of Your Article Here." id="article_content_2_input"></textarea>
  <input type="text" name="article_creator" placeholder="Who Is Writing This Article?" id="article_creator_input">
  <input type="text" name="article_credit" placeholder="If This Article Is Copied, What Website Was It Taken From?" id="article_credit_input">
  <input type="submit" value="Submit">
 </form>

我做了var_dump(is_uploaded_file($_FILES['article_img']['tmp_name'])); 這是true

旁注編輯:這是在您編輯問題之前,只有其中一個被重命名的問題。 https://stackoverflow.com/revisions/36367407/4

  • $_FILES['photo']
  • $_FILES['uploadedfile']

是兩個不同的文件數組,並且您使用name="article_img"作為name屬性。

您需要對所有這些都使用相同的。

錯誤報告http://php.net/manual/zh-CN/function.error-reporting.php會告訴您。

錯誤報告添加到文件頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:顯示錯誤僅應在登台中進行,而不應在生產中進行。


附加編輯:

$target = $target . basename( $_FILES['photo']['name']);

如果這是您真正的編輯,仍然是錯誤的數組名稱。

我認為問題出在這一行:

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))

更改為此:

if(move_uploaded_file($_FILES['article_img']['tmp_name'], $target))    

您的html有:

<input type="file" name="article_img" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input">

而且您的php正在等待$ _FILES ['photo'] ['tmp_name']

將您的html文件輸入更改為:

<input type="file" name="photo" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM