2012-09-19 29 views
0

我想弄清楚如何將圖像上傳到文件夾。我不想通過列出目錄中的所有文件來列出它。在PHP/MySQL中上傳大小限制的圖像

我想要做的是讓用戶插入某些值放入MySQL中,然後在文件完成上傳並將其插入MySQL字段「filename」時取出文件名。

事情是,我真的不知道如何在PHP中進行文件上傳,更不用說如何在文件完全上傳之前不將信息添加到數據庫。有人可以幫我嗎?

我也想知道如何將最大文件大小限制到一定大小。我有一段時間沒有關注技術,所以我想知道現在的平均數碼相機現在的平均照片尺寸是多少?

+0

照片的平均大小,這是非常可變的。假設你只接受JPEG圖像而不是RAW,我會說手機是2M,數碼相機是4M。如果說6M,你可以合理地有一個限制,並且要求用戶縮小圖像,如果它大於那個。默認情況下,PHP中的最大上傳大小爲8M。 – halfer

回答

0

那麼你似乎已經把它分解成步驟自己,所以你似乎明白該怎麼做。

你需要的第一件事就是用PHP上傳文件。你可以找到一個教程here。您需要一個HTML格式的表單和一個PHP文件來處理它。這也是您指定文件大小的地方。

樣本HTML

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

示例PHP

$target_path = "uploads/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 

然後,一旦你上傳你需要將其存儲在數據庫中的文件。您需要連接到數據庫(tutorial here

然後,你需要將信息添加到表,文件名是在var $_FILES['uploadedfile']['name']所以你需要沿着

mysql_query("INSERT INTO files (Date, Filename) 
VALUES ('$date', '$_FILES['uploadedfile']['name']')"); 

行一些代碼有關插入數據庫的更多信息,請參閱here

1

讓我們確保在頁面中有一個表單。讓我們把它稱爲form.php的:

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

然後我們創建一個在同一個文件夾中form.php的所謂uploader.php文件。

// change the username and password to your database information 
mysql_connect("localhost", "username", "password"); 
$target_path = "uploads/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 
// Here we will insert into the database 
mysql_query("INSERT INTO fileuploads (filename) VALUES ('".$target_path."')"); 

現在確保您有一個名爲fileuploads的表,其中包含字段「filename」。

不要忘記創建在同一文件夾作爲form.php的目錄和uploader.php所謂的「上傳」

我希望這會爲你工作。

+1

不要再使用'mysql_'功能:'不鼓勵使用此擴展名。相反,應該使用MySQLi或PDO_MySQL擴展。另請參閱MySQL:選擇API指南和相關FAQ以獲取更多信息。此功能的替代方法包括' – Peon

+0

問題是,這將是不安全的,因爲它允許用戶上傳任何內容,而不僅僅是圖像,對嗎? 此外,您沒有回答如何合併文件大小的問題。 – Reidmere