关于文件上传

关于文件上传问题

CLIENT HTML:

<br>
Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。
<form name="uploadform" action="mystruts2/fileUpload.action" method="post" enctype="multipart/form-data">
  选择上传的文件: <input type="file" name="myFile"><br>
   文件描述: <input type="text" name="fileDesc">
   <input type="submit" name="btnUpload" value="上传">
</form>
<br>

ABOUT JAVA ACTION:

package com.gc.action;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;

public class FileUploadAction extends ActionSupport{
	private static final int BUFFER_SIZE = 1024*1024;
	private File myFile;
	private String fileName;
	private String contentType;
	private String fileDesc;
	private String imageFileName;
	/*
	public File getMyFile() {
		return myFile;
	}
	*/
	public void setMyFile(File myFile) {
		this.myFile = myFile;
	}
	/*
	public String getFileName() {
		return fileName;
	}
	
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	*/
	/*
	public String getMyFileContentType() {
		return contentType;
	}
	*/
	
	public void setMyFileContentType(String contentType) {
		this.contentType = contentType;
	}
	
	public void setMyFileFileName(String fileName){
		this.fileName=fileName;
	}
	
	public String getFileDesc() {
		return fileDesc;
	}
	
	public void setFileDesc(String fileDesc) {
		this.fileDesc = fileDesc;
	}
	
	public String getImageFileName() {
		return imageFileName;
	}
	
	/*
	public void setImageFileName(String imageFileName) {
		this.imageFileName = imageFileName;
	}
	*/
	
	private static void copyFile(File src, File dst){
		//key method copy file from client to server temp floder
		try{
			InputStream in=null;
			OutputStream out=null;
			try{
				//in=new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
				//out=new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);
				in=new BufferedInputStream(new FileInputStream(src));
				out=new BufferedOutputStream(new FileOutputStream(dst));
				
				byte[] buffer=new byte[BUFFER_SIZE]; 
				while(in.read(buffer)>0){
					out.write(buffer);
				}				
			}finally{
				if(null != in) in.close();
				if(null != out) out.close();
			}			
		}catch(Exception ex){
			ex.printStackTrace();			
		}		
	}
	
	private static String getExtention(String fileName){
		int pos=fileName.lastIndexOf(".");
		return fileName.substring(pos);		
	}
	
	public String execute(){
		try{
			imageFileName=new Date().getTime()+this.getExtention(fileName);
			String pathFileName=ServletActionContext.getServletContext().getRealPath("/uploadFile")+File.separator+imageFileName;
			File imageFile=new File(pathFileName);
			copyFile(myFile,imageFile);
			
			//save image file name to reqeust  
			//ServletActionContext.getRequest().setAttribute("imageFileName", imageFileName);
			HttpServletRequest request=ServletActionContext.getRequest();
			request.setAttribute("imageFileName", imageFileName);			
			return SUCCESS; 
		}catch(Exception ex2){
			return INPUT;  //注意:错误返回的是INPUT,而不是ERROR
			//return ERROR;	
		}
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值