最近做了一個項目,用戶上傳圖片后通過img控件顯示出來。大家都知道img通過src屬性就可以顯示圖片。如<img src="http://127.0.0.1/a/b/abc.jpg">。這樣做沒有任何問題,相信很多朋友也是這么做的。
但是這樣做有個問題,圖片必須是放在應用下面的。而且如果做了集群的話,那么圖片就分散在富多個應用下面,很不好管理。這是我們自然會想到要是將圖片放在一個地方就好了,最好是在應用外面,比如c盤的img目錄下面。當然這樣上傳圖片是很好做,但是要讀取圖片該怎么辦呢?通過src="http://127.0.0.1/a/b/abc.jpg"這種辦法是無法辦到的。這時我們可以通過下面的辦法讀取制定盤符下面的圖片:
@RequestMapping(value="showImg") public void ShowImg(HttpServletRequest request,HttpServletResponse response) throws IOException{ String imgFile = request.getParameter("imgFile"); //文件名 String path= UrlUtil.getValue("goodsImg");//這里是存放圖片的文件夾地址 FileInputStream fileIs=null; try { fileIs = new FileInputStream(path+"/"+imgFile); } catch (Exception e) { log.error("系統找不到圖像文件:"+path+"/"+imgFile); return; } int i=fileIs.available(); //得到文件大小 byte data[]=new byte[i]; fileIs.read(data); //讀數據 response.setContentType("image/*"); //設置返回的文件類型 OutputStream outStream=response.getOutputStream(); //得到向客戶端輸出二進制數據的對象 outStream.write(data); //輸出數據 outStream.flush(); outStream.close(); fileIs.close(); }
這里我是使用了springMVC框架。@RequestMapping(value="showImg")實際就是一個請求。
這時我們將img的src改為"http://127.0.0.1/a/showImg?imgFile=abc.jpg"就能顯示圖片了,也就是講src改為一個請求地址,imgFile后是圖片的名字。
