1. 程式人生 > >在jsp中通過I/O流方式讀取圖片並展示到頁面

在jsp中通過I/O流方式讀取圖片並展示到頁面

之前在做一個專案時用到了圖片上傳並立即展示到頁面瀏覽,而且圖片存放在硬碟上的一個資料夾中而非在工程與資料庫中,這就會出現一個問題,如果不是在開發程式環境中訪問圖片頁面,則會出現圖片不能展示情況,原因很明顯,就是外部無法訪問到伺服器硬碟上的圖片。所以這時就需要用到i/o流讀取圖片並展示,以下是具體步驟:

1.圖片展示頁面showImg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>i/o流讀取圖片</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<script src="local/communication/static/jquery.min.js" charset="utf-8"></script>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  <div>
     <img id="viewImg2" src="local/communication/db/img.jsp?flag=zheng" style="height:90px;width:200px;" >
  </div>
  
  
  </body>
</html>

2.通過jsp頁面服務讀取圖片,imp.jsp程式碼:

<%@ page language="java" import="java.util.*,java.util.Map.Entry,java.text.SimpleDateFormat,java.util.Date,net.sf.json.JSONArray,net.sf.json.JSONObject,java.net.URLEncoder,java.net.URLDecoder" pageEncoding="utf-8"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.OutputStream,java.io.FileOutputStream,java.io.IOException,java.io.FileInputStream,java.io.PrintWriter," %>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("image/png");
response.setHeader("Content-Disposition","attachment;Filename=test.png");
BufferedOutputStream bos = null;
InputStream fis = null;
BufferedInputStream bis = null;

String flag=request.getParameter("flag")==null?"":request.getParameter("flag");
try{
	
	String tPath="D://img/11.jsp";
	
	bos = new BufferedOutputStream(response.getOutputStream());
	fis = new FileInputStream(tPath);
	bis = new BufferedInputStream(fis);
	byte[] buff = new byte[2048];
	int bytesRead;
	while (-1 != (bytesRead = bis.read(buff, 0, buff.length)))
	{
		bos.write(buff, 0, bytesRead);
	}
	bos.flush();
}catch(Exception e){
}finally{
	if(bos!=null){
		bos.close();
	}
	if(bis!=null){
		bis.close();
	}
	if(fis!=null){
		fis.close();
	}
}
out.clear();
out = pageContext.pushBody();
%>


相關推薦

jsp通過I/O方式讀取圖片展示頁面

之前在做一個專案時用到了圖片上傳並立即展示到頁面瀏覽,而且圖片存放在硬碟上的一個資料夾中而非在工程與資料庫中,這就會出現一個問題,如果不是在開發程式環境中訪問圖片頁面,則會出現圖片不能展示情況,原因很明顯,就是外部無法訪問到伺服器硬碟上的圖片。所以這時就需要用到i/o流讀取

淺談JAVAI/O(一)

今天學習了I/O流,所以和大家聊一下 關於I/O流的一些寫法與個人心得! 首先需要了解的就是什麼是流。流呢就是一連串的字元,它是根據先進先出的方式來進行傳送資訊的一種通道!那麼流可以具體用來做什麼呢?甚至說什麼樣的場景下我們才會用到流呢?I/O流的一個主

Laravel通過ajax的POST方式傳值實現頁面跳轉

1.新增測試按鈕 <button class='test' >ajax測試</button> 2.ajax部分程式碼 @section('js') <scr

Delphi以二進位制方式讀取圖片顯示出來

procedure TForm1.BitBtn1Click(Sender: TObject); var StringStream : TStringStream; FSize : integer; FileData : string; i : integer; DataSt

JAVA-初步認識-I/O(字節流-FileReader-讀取方式1)

結果 奇怪 字節 進行 read file -s 聯想 子類 一. 寫完之後,要進行讀取。現在講解的對象從FileWriter變為了FileReader,從輸出為了輸入。 對於IO流的講解,始終是圍繞著字符流來的,立足點也是字符流中的兩個具體的子類對象。 Reader對象的

javai/o體系結構及分類

Java中IO流的體系結構如圖: 在整個Java.io包中最重要的就是5個類和一個介面。5個類指的是File、OutputStream、InputStream、Writer、Reader;一個介面指的是Serializable.掌握了這些IO的核心操作那麼

i/o 使用字元 改寫檔案特定部分內容

使用字元流改變特定內容時藉助StringBuffer類中的.toString().replace()方法, BufferedReader(Writer) 可以包裝一個新的其他型別的輸入,輸出流,使用緩衝區提高效率。 //建立字元流 緩衝區

javaI/O的隨機

隨機流要實現RandomAccessFile這個方法 RandomAccessFile raf = new RandomAccessFile(“D:/IOTest/helloworld.txt”, “

Java I/O系統學習系列三:I/O的典型使用方式

  儘管可以通過不同的方式組合IO流類,但我們可能也就只用到其中的幾種組合。下面的例子可以作為典型的IO用法的基本參考。在這些示例中,異常處理都被簡化為將異常傳遞給控制檯,但是這隻有在小型示例和工具中才適用。在程式碼中,你需要考慮更加複雜的錯誤處理方式。   同樣,本文會包括如下幾個方面:   緩衝輸入檔

JavaI/O輸入輸出概述

       流是一組有序的資料序列,根據操作型別,可以分為輸入流和輸出流兩種,Java語言中定義的負責各種輸入輸出的類都被放在java.io包中。其中所有的輸入流類都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的

筆記:I/O-字符集

表示 ava deb 建立 gin integer 示例 字節 標準化 Java 庫的 java.nio 包用 Charset 類統一了對字符集的轉換,支付姐建立了兩個字節Unicode碼元序列與使用本地字符編碼方式的字節序列之間的映

Java I/O的總結

註意 size 標記接口 ble ansi 寫入 就會 另一個 span I/O的類結構圖 I/O的分類 根據處理的數據類型分為:字節流和字符流。 根據數據流向分為:輸入流和輸出流。 流又可分為節點流和處理流。 節點流 直接與數據源相連 處理流 與節點流一

筆記:I/O-對象序列化

err extends 自己 point clas xtend his size cto Java 語言支持一種稱為對象序列化(Object Serialization)的非常通用的機制,可以將任何對象寫入到流中,並在之後將其讀回,首先需要支持對象

筆記:I/O-內存映射文件

pos 開始 col java mod 傳播 寫入 i/o .get 內存映射文件時利用虛擬內存實現來將一個文件或者文件的一部分映射到內存中,然後整個文件就可以當作數組一樣的訪問,這個比傳統的文件操作要快得多,Java 使用內存映射文件首先需要從文件中獲取一個cha

I/O

相對 str 文件 cto length sre src void 其他 I/O:input/output1.java.io.File表示:文件或者文件夾(目錄)File f = new File("文件路徑");註意:相對路徑:web項目的相對都是以項目為起點。(src/

I/O操做總結(三)

div nta 利用 buffer 實現 als 覆蓋 字符 not 說實話,其實我並不是很喜歡Java這門語言,盡管它很強大,有很多現成的API可以調用 但我總感覺它把簡單的事情弄得太過復雜,甚至有時候會讓人迷失 弄不清到底是為了寫出東西,還是為了語言本身 我學習的第一門

C++: I/O詳解(三)——串

name namespace 轉換 pac end 成員 col logs nbsp 一、串流 串流類是 ios 中的派生類 C++的串流對象可以連接string對象或字符串 串流提取數據時對字符串按變量類型解釋;插入數據時把類型 數據轉換成字符串 串流I/O具有格式化功能

JAVA-初步認識-I/O(字節流-FileWriter-異常處理)

span 指針 出現 ima bsp file 字節 創建 出現異常 一. 通用換行的知識點是在哪兒介紹的?新建了FileWriter就有異常。 將拋出異常語句去掉後,後面幾句話都會出現異常。 紅色波浪線全部出現就是有異常。 文件找不到異常可以理解,為什麽還有

JAVA-初步認識-I/O(字符-緩沖區-解釋)

bsp 內部 inf .com 分享 png 緩沖區 com gpo 一. 說完了字符流操作文件的基本對象應用以外, 我以為緩沖區是流對象自己內部,而不是中轉站buf。 這裏就是介紹一下緩沖區,作為一個中轉的地方。緩沖區更為深入的用法,還不會,理解還不夠。JAVA-初步

JAVA-初步認識-I/O(字符-緩沖區-BufferWriter)

講解 技術分享 字符 alt spa 技術 span 分類 為什麽 一. 對於緩沖區,也進行了分類,緩沖讀和緩沖寫。現在講解緩沖寫。 為什麽會有BufferWriter這樣的對象存在,就是將之前的ch,buf之類的東西和流對象結合起來,使它們成為一個整體。 將緩沖的功能融