關於web項目中的圖片上傳、並在前端顯示問題(tomcat中配置文件上傳虛擬路徑)


一、數據庫存儲

  直接把圖片的二進制碼存到數據庫,可參考blog:http://blog.csdn.net/hope2jiang/article/details/590733

  直接存圖片在mysql上面有兩點好處:

    1.比較容易做取重,就是相同的圖片只存一份.

    2.最重要備份使用數據庫的備份方式簡單.

    3.容易管理,去掉無用的圖片等.

  缺點:

    1.不適合超大量存儲,數據的存儲越大,恢復越麻煩

    2.當然一般還是需要前端做更多的物理緩存,而不是靠mysql來直接輸出.

  還是看需求,如果圖片是小圖片,像論壇使用的,並且需要注重他的優點的可以使用,至於量沒有具體的,你要想想如果數據庫遇到問題,

  它的重做和遷移是否方便的問題.其實如果不是特殊情況一般存在數據庫里都不是好的選擇.平衡他的優缺點.

二、webRoot下存儲

  利用上床組件把圖片上傳到web項目下,再存儲圖片的相對路徑到數據庫表中,需生成一個新的不會重復的圖片名

  缺點:顯而易見重新部署項目前需要重新把已上傳的圖片備份,待部署成功后拷貝到web項目下

三、web項目外存儲

  顧名思義,把圖片上傳到web目錄外

  1.建立存放圖片的目錄和web項目下一目錄之間的聯系

    例如:①Linux系統下,首先把圖片上傳到項目外一目錄;

    ②然后把此目錄掛載到項目內某一目錄下mount --bind 實際存放圖片目錄項目內某一目錄;

    ③然后把上傳圖片的相對路徑存儲到數據庫表中;

    ④最后在項目中直接訪問這個URL獲取圖片。

  注意:第一存放圖片的目錄需有上傳權限;

    第二在重新部署時,undeploy前先解除掛載umount 實際存放圖片目錄項目內某一目錄;

    待項目上傳成功后再重新建立掛載,否則在undeploy時可能丟失已上傳的圖片。

  缺點:每次部署前后要進行掛載,解掛載操作,易誤操作丟失資源

  2.配置虛擬路徑

  例如使用tomcat時:

    首先把圖片上傳到項目外一目錄下;然后在tomcat中配置一個虛擬路徑指向上傳目錄命名為  "/fileUpload"  (在/conf/server.xml下配置Context即可);

    然后把上傳圖片的相對路徑存儲到數據庫表中,再在程序中通過訪問這個虛擬路徑 "/fileUpload" + 數據庫中存儲的相對URL 來獲取文件資源;

    (其實相當於在tomcat下重新啟動了一個web項目,然后通過訪問此web項目下的圖片資源,

    這樣其實也可以通過 http://ip:port/webProject/ resourse)。

  解決:可以使用tomcat的配置文件將某個請求映射到物理路徑下 ,完成圖片的回顯。

  例子:

  1.修改tomcat的配置文件(window環境),

    首先找到tomcat目錄下conf目錄下的server.xml文件,server.xml文件中找到<Host></Host>;

    然后在其中加上這<Context path="/uploadfile" docBase="D:\File\imager"></Context>。

  如:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." 
    suffix
=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />   <!-- 下面兩條主要是tomcat轉發圖片請求到相應的電腦物理磁盤位置 -->   <Context path="/uploadfile" docBase="D:\File\imager"></Context> </Host>

 

  tomcat在的請求一般為:http://localhost:8080/uploadfile/abc.jpg。配置完重啟之后,該請求自動跳轉到物理路徑D:\File\imager下查找。會訪問本機的D:\File\imager\abc.jpg。

  注意:在啟動完tomcat后會報路徑“D:\File\imager”找不到的bug,這是因為:tomcat不會自動幫您創建相關的文件路徑,需要我們自己先創建好相應的文件路徑。

 

轉載自:http://blog.csdn.net/u014305991/article/details/42431369


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM