1. 程式人生 > >JAVA 關於圖片上傳的程式碼

JAVA 關於圖片上傳的程式碼

private File file; 

private String fileFileName; 
private String picture; 
//都有getter 和 setter 

InputStream is = new FileInputStream(file); 
//引入一個IO流的輸入流
String root = ServletActionContext.getRequest() 
.getRealPath("/bookpicture"); 
//通過REQUEST來得到相對地址,並在後面加上/bookpicture

File f = new File(root, this.getFileFileName()); 
//定義一個FILE檔案,第一個引數是檔案的路徑,第二個是檔案的名字

picture="."+"\\"+"bookpicture"+"\\"+this.getFileFileName();
//為PICTURE字串賦值,/地址/檔名 
System.out.println 
("======picture====="+picture); 
//從控制檯輸出Picture

OutputStream os = new FileOutputStream(f); 
//第一個檔案的輸出流

byte[] buffer = new byte[1024];
//定義一個bufer的字串,長度為1024
 
int len = 0; 
while ((len = is.read(buffer)) > 0) { 
//如果從制定檔案中讀取到的資訊為結束就繼續迴圈
os.write(buffer, 0, len); 
//將檔案讀出的內容寫入到指定的檔案中

}
package com;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import com.jspsmart.upload.*;



public class uploadfiles extends HttpServlet
{
	public void doGet(HttpServletRequest request,HttpServletResponse response)
					throws ServletException,IOException
	{
		//使用了一個第三方的元件,存放在web-inf/lib下
       		response.setContentType("text/html;charset=GB2312");
       	
       		//由於SmartUpload的初始化方法需要pageContext,所以我們在servlet中得到他
       		//為了得到pageConext要首先得到JspFactory的例項
       		//通過JspFactory的例項的getPageContext方法得到pageConext的例項
		JspFactory jf = null;
		
		//得到JspFactory的例項
		jf=JspFactory.getDefaultFactory();
				
		/*
		getPageContext(Servlet servlet, 
					   ServletRequest request, 
					   ServletResponse response, 
					   java.lang.String errorPageURL, 
					   boolean needsSession, 
					   int buffer, 
					   boolean autoflush)
       	*/       	
		PageContext pageContext=jf.getPageContext(this,request,response,null,true,8192,true);
		
		try
		{
			//例項化SmartUpload
			SmartUpload mySmartUpload=new SmartUpload();
			
			//初始化SmartUpload的例項,需要PageContext的例項
			mySmartUpload.initialize(pageContext);
			
			//設定最大上傳的位元組數,其實可以不進行設定,表示上傳的檔案沒有大小限制
			//mySmartUpload.setTotalMaxFileSize(10000000);
			mySmartUpload.upload();
			
			//下面是單檔案上傳
			//上傳的檔案以com.jspsmart.upload.File 代表,如果檔名稱重複,則進行覆蓋
			com.jspsmart.upload.File file=mySmartUpload.getFiles().getFile(0);
			String upLoadFileName=file.getFileName();
			
			//呼叫com.jspsmart.upload.File例項的saveas的方法儲存檔案,此時的檔名即是
			//儲存到伺服器上的檔名
			file.saveAs("/upload/"+upLoadFileName);
			Request req = 
			Text t = .....;
			t.setUpload(upLoadFileName);
			t.set.....(req);
		}
		catch(SmartUploadException e)
		{
			System.out.println(e.getMessage());
		}

		
	
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException
	{
		doGet(request,response);
	}
}