在jsp頁(yè)面上顯示服務(wù)器的圖片:
這樣顯示是沒(méi)有問(wèn)題的。
我在jsp頁(yè)面上傳圖片到該服務(wù)器:
:
package com.zhangying.util; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder;public class FileUpload extends ActionSupport implements ServletRequestAware,ServletResponseAware{ /** * author : Jacen * FileUpload Action * upload files from localhost to server */ private static final long serialVersionUID = 1L; private String filePath; private String serverPath; private HttpServletResponse response; private HttpServletRequest request; public String uploadfile() throws Exception { System.out.println(filePath); //參數(shù)1:本地文件路徑 // System.out.println(serverPath); //參數(shù)2:要上傳的服務(wù)器路徑 String resultPath = ""; // 上傳后圖片所在的路徑 FileOutputStream out = null; // 文件輸出流 try { // 驗(yàn)證圖片上傳的格式是否正確 File f = new File(filePath); if (!f.isFile()) { throw new Exception(" f不是圖片文件!");
} if (f != null && f.exists()) { // 這里的ImageIO屬于java工廠類(lèi),在工廠類(lèi)class里面,調(diào)用的System.gc(),頻繁調(diào)用會(huì)造成dump,需要考慮優(yōu)化 BufferedImage image = ImageIO.read(f); // 讀入文件 if (image != null) { BufferedImage tag = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); // 構(gòu)造一個(gè)類(lèi)型為預(yù)定義圖像類(lèi)型之一的 BufferedImage tag.getGraphics().drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null); // 繪制所需要尺寸大小的圖片 /* * 以下生成 圖片上傳后在服務(wù)器上的 新路徑 */ int lastLength = filePath.lastIndexOf("."); String imageName="jacen"; //用用戶名來(lái)作為上傳圖片的文件名 String fileType = filePath.substring(lastLength); // 獲取上傳圖片的類(lèi)型 resultPath = "http://www.gyswad.com:90/developerCerpic/"+ imageName+ fileType; //圖片在服務(wù)器上的地址 System.out.println(resultPath); /* * 進(jìn)行圖片的繪制 */ out = new FileOutputStream(resultPath); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder .getDefaultJPEGEncodeParam(tag); param.setQuality(0.95f, true); // 95%圖像 param.setDensityUnit(1); // 像素尺寸單位.像素/英寸 param.setXDensity(300); // 水平分辨率
param.setYDensity(300); // 垂直分辨率 encoder.setJPEGEncodeParam(param); encoder.encode(tag); tag = null; } } f = null; } catch (Exception e) { e.printStackTrace(); }finally{ out.close(); out=null; } // request.setAttribute("resultPath", resultPath); // return resultPath; return "success"; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public String getServerPath() {
return serverPath; } public void setServerPath(String serverPath) { this.serverPath = serverPath; } public HttpServletResponse getResponse() { return response; } public void setResponse(HttpServletResponse response) { this.response = response; } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } @Override public void setServletResponse(HttpServletResponse arg0) { // TODO Auto-generated method stub
} @Override public void setServletRequest(HttpServletRequest arg0) { // TODO Auto-generated method stub } }
現(xiàn)在報(bào)錯(cuò):說(shuō)是空指向異常
finally{ out.close(); out=null; }
我感覺(jué)是有問(wèn)題,請(qǐng)各位幫忙看一下jsp上傳圖片到服務(wù)器,這里的到底怎么寫(xiě)?還有jsp上傳圖片到服務(wù)器,如果各位還有什么更好的方法實(shí)現(xiàn)圖片上傳,請(qǐng)指教。本人新手,一切都略知。
控制臺(tái)打印的錯(cuò)誤信息是這樣的:
\temp\upload__daca63c_1399f88364d__8000_00000000.tmp http://www.gyswad.com:90/developerCerpic/jacen.tmp java.io.FileNotFoundException: http:\www.gyswad.com:90\developerCerpic\jacen.tmp (文件名、目錄名或卷標(biāo)語(yǔ)法不正確。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.(Unknown Source) at java.io.FileOutputStream. (Unknown Source) at com.zhangying.util.FileUpload.uploadfile(FileUpload.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)
補(bǔ)充:我想將本地圖片上傳到服務(wù)器的d://.2/temp/image文件夾下面。