程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP上傳圖片(無組件)示例+求指正版

JSP上傳圖片(無組件)示例+求指正版

編輯:關於JSP

JSP上傳圖片用組件更加方便,但是作為入門菜鳥,我還是想先練練手,從小事做起。

上傳圖片有兩種方式:保存到服務器某個目錄中和保存到數據庫BLOB字段中,只學會了前者。

上代碼。

上傳頁面源碼:

[html]
<HTML>     
 <HEAD>     
  <TITLE>上傳</TITLE>       
  <HEAD>  
  <BODY>    
    <FORM METHOD=POST ACTION="mytest/page/accept.jsp">     
     圖片:<INPUT TYPE="file" NAME="image"><BR>    
     <INPUT TYPE="submit" value="提交">    
     </FORM>   
   </BODY>      
</HTML> 

處理上傳頁面:

[html]
<%@ page import="java.io.*"%>   
<HTML> 
<HEAD> 
<TITLE>ac</TITLE> 
</HEAD> 
<BODY> 
<%   
   /*這裡得到的是圖片路徑,注意中文亂碼問題*/ 
   String ima=request.getParameter("image");   
   ima = new String(ima.getBytes("ISO-8859-1")); 
   /*得到圖片名稱*/ 
   String filename = ima.substring(ima.lastIndexOf("\\") + 1, ima.length());    
   out.print(filename + "<br>");//輸出驗證 www.2cto.com  
   try{      
       /*得到項目的絕對路徑,但是這個方法已經不推薦使用了,所以最好另設路徑*/ 
       String path=request.getRealPath("/");   
       out.print(path + "<br>"); 
       /*建立一個指向指定文件的輸出流,這步執行之後相應的文件就會在目錄中建立,*/ 
       /*可以查看一下。*/ 
       FileOutputStream ot = new FileOutputStream(path+filename); 
       /*打開到一個文件的實際連接來建立輸入流,ima指的是文件的路徑。*/ 
       FileInputStream in=new FileInputStream(ima); 
       byte b[] = new byte[1024]; 
       /*從輸入文件讀取數據,寫入到輸出文件*/ 
       while(-1 != in.read(b)) 
       { 
            ot.write(b); 
       } 
       /*關閉流*/ 
       in.close();      
       ot.close();    
   }    
   catch(Exception e)    
   {    
        System.out.print(e.toString());   
   }   
%>     
</BODY> 
總結:

1----總的思路很簡單,建立到輸出文件(即存儲目標)的輸出流,再建立指向源文件的輸入流,最後從輸入流讀入,輸出到輸出流即可。

2---疑問。網上有個很火無組件上傳的帖子,我看了很多遍。他用了很多其他的東西:JPEGImageDecoder、BufferedImage、JPEGImageEncoder。我理解那些,但覺得我的代碼雖然簡單,但是可能存在BUG,希望高手能夠之處,多多感謝。


摘自 wkupaochuan的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved