UploadAction .java
package com.examples;
import com.opensymphony.xwork.Action;import com.opensymphony.xwork.ActionContext;
import com.sun.image.codec.jpeg.*;
import java.awt.Image;import java.awt.image.BufferedImage;import java.io.*;import java.util.*;
public class UploadAction implements Action {File file;String fileContentType;String fileFileName;File[] files;String[] filesContentType;String[] filesFileName;private boolean debug=true;String srcName ;//文件名String path ; //存储文件路径String url;
public String execute() throws Exception {ActionContext context=ActionContext.getContext();Map map=context.getParameters();context.getValueStack();System.out.println("filesFileName="+filesFileName);
if(filesFileName!=null){for (int i = 0; i < filesFileName.length; i++) {srcName = filesFileName[i];System.out.println("srcName="+srcName);url = path + srcName;System.out.println("url="+url);File target = new File(url);if (target.exists()) {target.delete();}files[i].renameTo(target);}}
java.io.File file1 = new java.io.File(url); //读入刚才上传的文件String newurl= path + "min"+srcName; //新的缩略图保存地址Image src = javax.imageio.ImageIO.read(file1);//构造Image对象float tagsize=200;int old_w=src.getWidth(null); //得到源图宽int old_h=src.getHeight(null);int new_w=0;int new_h=0; //得到源图长int tempsize;float tempdouble;if(old_w>old_h){tempdouble=old_w/tagsize;}else{tempdouble=old_h/tagsize;}new_w=Math.round(old_w/tempdouble);new_h=Math.round(old_h/tempdouble);//计算新图长宽BufferedImage tag = newBufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图FileOutputStream newimage=new FileOutputStream(newurl); //输出到文件流JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);encoder.encode(tag); //近JPEG编码newimage.close();
return SUCCESS;}
public String doDefault() throws Exception {return INPUT;}
public void setFile(File file) {this.file = file;}
public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}
public void setFiles(File[] files) {this.files = files;if(files==null){return ;}if(debug){for (int i = 0; i < files.length; i++) {System.out.println(files[i].getName()) ;}}}
public void setFilesContentType(String[] filesContentType) {this.filesContentType = filesContentType;}
public void setFilesFileName(String[] filesFileName) {this.filesFileName = filesFileName;}
public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}
public void setDebug(boolean debug) {this.debug = debug;}public String getPath() {return path;}
public void setPath(String path) {this.path = path;}
public String getUrl() {return url;}
public void setUrl(String url) {this.url = url;}public String getSrcName() {return srcName;}
public void setSrcName(String srcName) {this.srcName = srcName;}public File getFile() {return file;}
public String getFileContentType() {return fileContentType;}
public String getFileFileName() {return fileFileName;}
public File[] getFiles() {return files;}
public String[] getFilesContentType() {return filesContentType;}
public String[] getFilesFileName() {return filesFileName;}}
upload.xml
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN""http://www.opensymphony.com/xwork/xwork-1.0.dtd"><xwork><package name="upload" extends="webwork-default" namespace="/examples"><interceptors><interceptor name="upload"class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"><param name="allowedTypes">image/jpeg/jpg/bmp/txt</param><param name="maximumSize">10000000</param></interceptor><interceptor-stack name="fileUploadStack"><interceptor-ref name="upload"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors><default-interceptor-ref name="fileUploadStack"/><action name="upload" class="com.examples.UploadAction"><result name="success">success.jsp</result><result name="input">input.jsp</result></action></package>
</xwork>