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" class="brandAction" 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;
    }

 

这样就可以获取到值了!

你可能感兴趣的:(Struts2-Fileupload-带参上传图片代码)