JavaWeb將圖片顯示在瀏覽器中
阿新 • • 發佈:2019-02-20
一、背景
使用者上傳了一張圖片,圖片到伺服器後用戶得到一個連結,可以將圖片顯示在瀏覽器上。
二、實現
假設專案名叫TestProject,檔案放在專案根目錄下的uploadImages資料夾下。
①圖片名為英文,可直接通過連結開啟圖片
<a href="http://localhost:8080/TestProject/uploadImages/myImage.jpg">預覽圖片</a>
②圖片名含有中文,通過Servlet將圖片輸出到瀏覽器上,使用圖片在伺服器上的絕對路徑
showImage.jsp
<a href="/TestProject/showImageServlet?filename=測試的圖片一枚.jpg">預覽圖片</a>
showImageServlet
public void showImage(HttpServletRequest request, HttpServletResponse response) throws Exception
{
response.setContentType("text/html; charset=UTF-8");
response.setContentType("image/jpeg");
String fname = request.getParameter("filename");
String newpath = new String(fname.getBytes("ISO-8859-1"), "UTF-8");
String absolutePath = rootPath + newpath;
FileInputStream fis = new FileInputStream(absolutePath);
OutputStream os = response.getOutputStream();
try
{
int count = 0;
byte[] buffer = new byte[1024 * 1024];
while ((count = fis.read(buffer)) != -1)
os.write(buffer, 0, count);
os.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (os != null)
os.close();
if (fis != null)
fis.close();
}
}
使用者上傳了一張圖片,圖片到伺服器後用戶得到一個連結,可以將圖片顯示在瀏覽器上。
二、實現
假設專案名叫TestProject,檔案放在專案根目錄下的uploadImages資料夾下。
①圖片名為英文,可直接通過連結開啟圖片
<a href="http://localhost:8080/TestProject/uploadImages/myImage.jpg">預覽圖片</a>
②圖片名含有中文,通過Servlet將圖片輸出到瀏覽器上,使用圖片在伺服器上的絕對路徑
showImage.jsp
<a href="/TestProject/showImageServlet?filename=測試的圖片一枚.jpg">預覽圖片</a>
showImageServlet
public void showImage(HttpServletRequest request, HttpServletResponse response) throws Exception
{
response.setContentType("text/html; charset=UTF-8");
response.setContentType("image/jpeg");
String fname = request.getParameter("filename");
String newpath = new String(fname.getBytes("ISO-8859-1"), "UTF-8");
String absolutePath = rootPath + newpath;
FileInputStream fis = new FileInputStream(absolutePath);
OutputStream os = response.getOutputStream();
try
{
int count = 0;
byte[] buffer = new byte[1024 * 1024];
while ((count = fis.read(buffer)) != -1)
os.write(buffer, 0, count);
os.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (os != null)
os.close();
if (fis != null)
fis.close();
}
}