2011-03-18 36 views
0

我可以允許用戶上傳到我們的服務器文件,然後可以安全地存儲,並可以上傳他們的用戶訪問?如何安全地上傳和存儲用戶文檔?

我在哪裏存儲他們,在數據庫中?或在網站上的文件夾?如果我確實使用文件夾?我怎麼能讓擁有他們的人看到它而不是其他人?

我是新來的存儲區,所以請裸露任何愚蠢的問題。

謝謝。

+0

我建議你擴大「安全存儲」的含義。 – 2011-03-18 14:42:18

+0

另外,RE:安全地上傳,也許看用HTTP/SSL。 – 2011-03-18 14:45:12

回答

0

使用<input type='file' />上傳的文件到達$_FILES超全局數組中的目標PHP腳本。 (Documentation

通常最好將它們存儲在數據庫的binary BLOB column中,在這裏您可以輕鬆地將它們與用戶標識相關聯,從而防止未經授權的用戶下載它們。它們通常與包含文件的MIME類型和大小(以字節爲單位)的列一起存儲。

以傳輸文件返回到瀏覽器的用戶,可以從PHP發送適當的Content-Type頭:

// the mimetype 
header("Content-type: application/whatever"); 
header("Content-length: $length-in-bytes"); 

// echo the file out to the browser 
echo $file; 
exit(); 
+0

是否有我可以參考的示例代碼?我得到了你向我展示的概念,但不是這個過程,就像實現它一樣。 – KPO 2011-03-18 14:40:49

+0

查看此前類似的問題:http://stackoverflow.com/questions/3300067/store-files-in-mysql-database-from-html-form – 2011-03-18 14:43:11

+0

不要忘記,雖然BLOB列有限制的大小,你會需要一些代碼將文件分割成表中的多行。 – Treffynnon 2011-03-18 14:50:11

1

文件,你需要跨越或使用搜索的文件,而不是文本數據在數據庫中聚合函數。操作系統文件系統專門用於處理文件的快速投放和搜索。所以我不會把它們放在數據庫中,而是放在文件系統上。

要保護它們,您可以將它們放置在禁止訪問的.htaccess文件的文件夾中,或將它們放在document_root之外。然後,您可以編寫一個簡單的PHP腳本來將這些文件回傳給用戶,前提是他們有權查看該文件。

+0

嘿。但是,我如何爲每個用戶編寫一個htacess?以及如何設置權限。任何教程我可以查看? – KPO 2011-03-18 15:30:16

+0

你*不要爲每個用戶寫一個'.htaccess'。只有一個禁止所有訪問_AND_,然後使用PHP腳本將文件流式傳輸給用戶。 – Treffynnon 2011-03-18 15:36:52

+0

謝謝。給我2-4天試試這個。當它工作,我會標記你的答案! – KPO 2011-03-19 03:22:58