簡體   English   中英

我應該在哪里保存用戶在我的服務器上上傳的文件?

[英]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,並且可以有效地防止它被機器人抓取。

  1. 使用java.io將文件作為應用程序內的InputStream讀取
  2. 使用Apache Commons Codec將其轉換為Base64。 encodeBase64URLSafeString(IOUtils.toByteArray(yourImageAsInputStream);
  3. 在您的回復HTML中,將圖像嵌入為<img src="data:image/jpeg;base64,encodedString">

關於SO的這篇文章也可能有用。

你有幾個選擇:

  1. 如果您使用的是Tomcat 7,則可以使用<Context>元素中的“別名”功能(http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Standard_Implementation)

  2. 您可以嘗試在某些特殊路徑上映射DefaultServlet,例如“/ uploads / *”,但要注意某些版本的Tomcat有一個DefaultServlet,當它未映射到“/”時基本上無法正常工作

  3. 您可以編寫自己的servlet來自己提供這些位,但最終會復制DefaultServlet的許多功能,並且可能會在健壯性類別中無法實現(例如,實現Range查詢等)

請注意,如果您編寫自己的servlet,則可以選擇對授權訪問某些資源執行基於用戶的檢查。 也許你不希望谷歌可以訪問你的整個上傳目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM