2008-12-11 134 views
-3

我使用此代碼上傳圖片。我從stackoverflow得到了這段代碼。我仍然無法上傳圖片。我在表格設置中更改了數據庫連接設置2.我創建了表格,但我不確定我創建的表格屬性是否正確。使用php上傳圖片

<html> 
<head><title>Store Some Binary File to a DB</title></head> 
<body> 

<?php 
if ($submit) { 
    $conn = mysql_connect("localhost", "your_username", "your_password") 
     or die ("Error connecting to database."); 

    mysql_select_db("your_database", $conn) 
     or die ("error connecting to database."); 

    $data = addslashes(file_get_contents($_FILES['form_data']['tmp_name']) 


    $result = mysql_query ("INSERT INTO your_table ". 
     "(description,bin_data,filename,filesize,filetype) ". 
     "VALUES ('$form_description','$data','$form_data_name',". 
     "'$form_data_size','$form_data_type')", 
     $conn); 

    $id = mysql_insert_id(); 
    print "<p>This file has the following Database ID: <b>$id</b>"; 

    mysql_close(); 

} else { 
?> 

    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data"> 
    File Description:<br> 
    <input type="text" name="form_description" size="40"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 
    <br>File to upload/store in database:<br> 
    <input type="file" name="form_data" size="40"> 
    <p><input type="submit" name="submit" value="submit"> 
    </form> 

<?php 

} 

?> 

</body> 
</html> 

此外,幫助我從數據庫中檢索圖像並在頁面上顯示它。

你認爲thiis現在能工作嗎?

+0

請修復拼寫並提供腳本的其餘部分。 – 2008-12-11 16:25:01

回答

1

http://www.php.net/manual/en/features.file-upload.php

而不是使用$ form_data作爲上傳文件的文件名,嘗試$_FILES['form_data']['tmp_name']

你也可以用更換相當笨拙

fread(fopen($form_data, "r"), filesize($form_data)) 

file_get_contents($_FILES['form_data']['tmp_name']) 
1

我不會建議存儲你的bi nary圖像文件直接在數據庫中。而應將其存儲在磁盤上,並將文件指針(文件目錄+文件名)存儲在數據庫中。

+0

如何使用PHP將數據保存在數據庫中請幫助我。 – 2008-12-12 03:03:46

1

在文件系統上存儲圖像的問題歸結爲數據庫複製。您還需要文件系統複製,有時可能比數據庫複製更難,特別是當某些服務器可能是遠程的時候。

沒有設置任何$ form_變量(除非我不能看到代碼或者'危險地'註冊全局變量)。你也可以在任何接受REQUEST值的查詢上添加addslashes(或者mysql_real_escape_string),否則你的腳本很容易被SQL注入。

您希望:

$form_description = isset($_POST['form_description']) ? $_POST['form_description'] : false; 

其他變量,甚至沒有張貼。你知道任何HTML和PHP嗎?這很容易解決,但我不寫這個給你!

我們需要的是一些反饋腳本產生什麼..你可以得到圖像回做:

$result = mysql_query ("SELECT `bin_data` FROM `your_table` WHERE `id` = ".$id, $conn); 

再比如說做(從文件陣列中確定的相關類型替換的內容類型):

$result_data = mysql_fetch_array($result, MYSQL_ASSOC); 
header('Content-Type: image/jpg'); 
echo $result_data['bin_data']; 
exit; 

您需要對該腳本做更多的工作,並且需要知道HTML,PHP和MySQL。