雖然這個答案可能並不代表「最佳實踐」,它的工作很好
我們使用後端服務器Apache作爲各種各樣的「文件服務器」 - 服務於私人文件和圖像用戶上傳到他們的帳戶。這是它是如何工作的:
設置mod_rewrite來處理你想要的URL。例如:
RewriteRule /content/(.*) /ServeContent.php?FileName=$1
腳本ServeContent.php將做到以下幾點:
1. Validate input
2. Authenticate user based on cookie or session data
3. Make a URL with $_GET['FileName'] and the IP of the backend server
http://192.168.1.30/content/somefile.jpg
4. Set appropriate headers for the file type
header('Content-type: image/jpeg')
5. readfile($URL)
這種方法要求的fopen,包裝在支持PHP。 readfile
不會將內容存儲在內存中,所以這確實不會佔用太多內存。其中一個主要的缺點是,在請求期間(可能會很長時間),您將持有apache/php進程。但實際上,除非您運營的是高流量的網站,否則您很可能不會遇到問題。
如果你是,那裏最有可能更好的解決方案。但是這對我們在各種應用程序中的大文件非常有效。
嘆氣,我希望能工作。我的內容服務器上的某些「內容」是HTML頁面的文件夾,其中包含與其他頁面和圖像的相關鏈接。 – KevMo 2009-11-02 16:53:41
你確定有問題嗎?發送文件時,您不能檢測或確定正確的內容類型嗎? – gahooa 2009-11-03 02:16:02
再次看到您的答案,它看起來像會工作。這種方法對使用.htaccess和cookie有什麼優勢? http://www.willmaster.com/blog/contentprotection/htaccess-cookie.php – KevMo 2009-11-03 05:14:30