2012-11-20 123 views
1

我一直在尋找網絡幾個星期了,無法找到解決我的問題。如何將圖像上傳到MySQL數據庫使用PHP/Flex

我正在使用Flex(front-end)PHP/MySql(Back-end)處理Web應用程序。

現在我想讓用戶上傳圖片作爲他們的個人資料圖片...我上傳他們到服務器上的目錄。現在我的老闆「覺得」他們應該直接存儲到數據庫中,不僅存儲圖像的鏈接,而且存儲整個內容。

請幫助球員....我卡住了!

+1

考慮** **不這樣做。在數據庫中存儲經常使用的圖像存在很多缺陷。例如 - 「緩存」。瀏覽器不會緩存名爲「image.php?id = 5423」的圖像。然後當然還有數據庫的大小問題。如果圖像很大,您將創建一個大型數據庫,該數據庫的運行速度也會變慢,然後直接從文件系統調用圖像。 – Peon

+0

是的Dainis我的確考慮過......我之前使用的是文件系統,現在我的老闆希望它被存儲在數據庫中。 –

+0

如果你想保護你的圖片不被竊取,你應該考慮這個問題的唯一原因。但即使如此,還是有更好的解決方案。我建議你收集所有有關在DB中存儲圖像的事實,並向你的上司證明,這樣的舉動總體上是一個嚴重的錯誤和錯誤。 – Peon

回答

0

所有在您從上傳文件的形式首先,你應該使用以下標籤:

enctype="multipart/form-data" 

還需要指定該字段爲下列之一:

TINYBLOB ,BLOB ,MEDIUMBLOB ,LONGBLOB

Finaly修改此代碼爲您的數據庫,並會做:)

<?php 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{ 
    $fileName = $_FILES['userfile']['name']; 
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 

    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    fclose($fp); 

if(!get_magic_quotes_gpc()) 
{ 
    $fileName = addslashes($fileName); 
} 

$query = "INSERT INTO upload (name, size, type, content) ". 
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')"; 

mysql_query($query) or die('Error, query failed'); 

} 

?>

+0

謝謝@Saber,這是有幫助的...我只需要調用flex。謝謝你... –

+0

不客氣:) –

0

通常,最好將圖像存儲在文件系統上(速度和大小)。爲此,您可以將圖像存儲在諸如「images/profiles/{userID} .jpg」之類的位置。如果您確實想要將圖像存儲在數據庫中,只需將列類型設置爲blob並在其中插入圖像內容。詳細描述將數據存儲在mysql數據庫中的好文章描述爲here

相關問題