[英]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.