[英]Where should I keep files uploaded by users on my server?
在我的網站上; 用戶可以上傳他們的照片。 我正在使用tomcat與apache,hibernate,jpa。
我希望將這些圖像/var/ImagesUploaded
在我的ubuntu盒子上的/var/ImagesUploaded
類的某個位置。 使用Java我可以使用java.io
在目錄/var/ImagesUploaded
引用這些文件但是如何在HTML頁面上向用戶顯示這些圖像? 在HTML文件中,我們需要像<img src=''>
這樣的標簽,這個src與webapp相關。 那么,我是否必須將用戶上傳的圖像保留在我的webapp中! 或者有更好的解決方案嗎?
將您的Web服務器配置為/var/imagesUploaded
服務器文件(例如, /imguploads
),或使用讀取映像並使用正確標頭將其輸出給用戶的腳本。
如何在應用程序上讀取圖像,然后將它們作為base64編碼流提供給用戶? 這樣,您就不必將您的圖像目錄暴露給Web,並且可以有效地防止它被機器人抓取。
InputStream
讀取 encodeBase64URLSafeString(IOUtils.toByteArray(yourImageAsInputStream);
<img src="data:image/jpeg;base64,encodedString">
關於SO的這篇文章也可能有用。
你有幾個選擇:
如果您使用的是Tomcat 7,則可以使用<Context>元素中的“別名”功能(http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Standard_Implementation)
您可以嘗試在某些特殊路徑上映射DefaultServlet,例如“/ uploads / *”,但要注意某些版本的Tomcat有一個DefaultServlet,當它未映射到“/”時基本上無法正常工作
您可以編寫自己的servlet來自己提供這些位,但最終會復制DefaultServlet的許多功能,並且可能會在健壯性類別中無法實現(例如,實現Range查詢等)
請注意,如果您編寫自己的servlet,則可以選擇對授權訪問某些資源執行基於用戶的檢查。 也許你不希望谷歌可以訪問你的整個上傳目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.