我可以允許用戶上傳到我們的服務器文件,然後可以安全地存儲,並可以上傳他們的用戶訪問?如何安全地上傳和存儲用戶文檔?
我在哪裏存儲他們,在數據庫中?或在網站上的文件夾?如果我確實使用文件夾?我怎麼能讓擁有他們的人看到它而不是其他人?
我是新來的存儲區,所以請裸露任何愚蠢的問題。
謝謝。
我可以允許用戶上傳到我們的服務器文件,然後可以安全地存儲,並可以上傳他們的用戶訪問?如何安全地上傳和存儲用戶文檔?
我在哪裏存儲他們,在數據庫中?或在網站上的文件夾?如果我確實使用文件夾?我怎麼能讓擁有他們的人看到它而不是其他人?
我是新來的存儲區,所以請裸露任何愚蠢的問題。
謝謝。
使用<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();
是否有我可以參考的示例代碼?我得到了你向我展示的概念,但不是這個過程,就像實現它一樣。 – KPO 2011-03-18 14:40:49
查看此前類似的問題:http://stackoverflow.com/questions/3300067/store-files-in-mysql-database-from-html-form – 2011-03-18 14:43:11
不要忘記,雖然BLOB列有限制的大小,你會需要一些代碼將文件分割成表中的多行。 – Treffynnon 2011-03-18 14:50:11
文件,你需要跨越或使用搜索的文件,而不是文本數據在數據庫中聚合函數。操作系統文件系統專門用於處理文件的快速投放和搜索。所以我不會把它們放在數據庫中,而是放在文件系統上。
要保護它們,您可以將它們放置在禁止訪問的.htaccess
文件的文件夾中,或將它們放在document_root
之外。然後,您可以編寫一個簡單的PHP腳本來將這些文件回傳給用戶,前提是他們有權查看該文件。
嘿。但是,我如何爲每個用戶編寫一個htacess?以及如何設置權限。任何教程我可以查看? – KPO 2011-03-18 15:30:16
你*不要爲每個用戶寫一個'.htaccess'。只有一個禁止所有訪問_AND_,然後使用PHP腳本將文件流式傳輸給用戶。 – Treffynnon 2011-03-18 15:36:52
謝謝。給我2-4天試試這個。當它工作,我會標記你的答案! – KPO 2011-03-19 03:22:58
我建議你擴大「安全存儲」的含義。 – 2011-03-18 14:42:18
另外,RE:安全地上傳,也許看用HTTP/SSL。 – 2011-03-18 14:45:12