Struts2-Fileupload-带参上传图片代码
jsp页面,带参数上传图片
<%@ page language="java" contentType="text/html; charset=GBK"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>Struts 2 File Upload</title></head><body topmargin="2"><FORM action="/brand/test" method="post"ENCTYPE="multipart/form-data"><input type="hidden" name="username" value="username_value"/><input type="hidden" name="password" value="password_value"/><s:file name ="myFile" /> <INPUT type="submit" value="上传"></FORM><s:fielderror/> </body></html>
??
struts.xml
<action name="test" method="test"><interceptor-ref name="fileUpload"><param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/pjpeg,application/msword,application/vnd.ms-excel,application/x-shockwave-flash,flv-application/octet-stream,video/x-flv</param></interceptor-ref><interceptor-ref name="defaultStack" /><result name="img">/products.jsp</result><result name="input">/products.jsp</result><result name="success">/products.jsp</result><result name="error">/fileupload.jsp</result></action>
?action
private static final long serialVersionUID = 0x85369b8626L; private static final int BUFFER_SIZE = 16384; private File myFile; private String fileName; public void setMyFileFileName(String fileName) { this.fileName = fileName; } public void setMyFile(File myFile) { this.myFile = myFile; }public String test() throws Exception{HttpServletRequest request = ServletActionContext.getRequest();String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username="+username);System.out.println("password="+password);System.out.println("default-set-file"+myFile);String root = request.getRealPath("/");System.out.println("file-"+Upload.toFile(myFile,fileName,root,"/test/"));return SUCCESS;}? upload.java
package tools;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Date;import org.apache.struts2.ServletActionContext;public class Upload {// 上传private static final long serialVersionUID = 0x85369b8626L;private static final int BUFFER_SIZE = 16384;public synchronized static String toFile(File path,String fileName,String root,String fileType) {String imageFileName="";String random = String.valueOf(Math.random()).substring(2);try {Help.createDir(root+fileType);imageFileName = (new StringBuilder(String.valueOf(fileType+ random))).append(getExtention(fileName)).toString();File imageFile = new File((new StringBuilder(String.valueOf(root))).append(imageFileName).toString());// 判断后缀类型int position1 = imageFileName.lastIndexOf('.');String fileName1 = codeToString(imageFileName.substring(position1 + 1));if (fileName1.trim().equals("jpg")|| fileName1.trim().equals("gif")|| fileName1.trim().equals("bmp")|| fileName1.trim().equals("swf")|| fileName1.trim().equals("jpeg")|| fileName1.trim().equals("pjpeg")|| fileName1.trim().equals("word")|| fileName1.trim().equals("excel")|| fileName1.trim().equals("flv")) {InputStream in = null;OutputStream out = null;try {in = new BufferedInputStream(new FileInputStream(path), BUFFER_SIZE);out = new BufferedOutputStream(new FileOutputStream(imageFile),BUFFER_SIZE);byte buffer[] = new byte[BUFFER_SIZE];while (in.read(buffer) > 0) {out.write(buffer);}} finally {if (in != null)in.close();if (out != null)out.close();}}} catch (Exception exception) {System.err.println(exception);}return imageFileName;}public static String getExtention(String fileName) {int pos = fileName.lastIndexOf(".");return fileName.substring(pos);}public static String codeToString(String str) {// 处理中文字符串的函数String s = str;try {byte tempB[] = s.getBytes("iso8859-1");s = new String(tempB);return s;} catch (Exception e) {return s;}}}?? 如要实现多图片上传,只要改两地方就行了。
???1.jsp页面
???
<%@ page language="java" contentType="text/html; charset=GBK"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>Struts 2 File Upload</title></head><body topmargin="2"><FORM action="/brand/test" method="post"ENCTYPE="multipart/form-data"><input type="hidden" name="username" value="username_value"/><input type="hidden" name="password" value="password_value"/><s:file name ="myFile" /><s:file name ="myFile1" /> <INPUT type="submit" value="上传"></FORM><s:fielderror/> </body></html>
?
2.action
private static final long serialVersionUID = 0x85369b8626L; private static final int BUFFER_SIZE = 16384; private File myFile; private File myFile1; private String fileName; private String fileName1; public void setMyFileFileName(String fileName) { this.fileName = fileName; } public void setMyFile(File myFile) { this.myFile = myFile; } public void setMyFile1FileName(String fileName) { this.fileName1 = fileName; } public void setMyFile1(File myFile1) { this.myFile1 = myFile1; }?
这样就可以获取到值了!