Struts2 +jquery+ajaxfileupload 实现无刷新上传文件

由于项目需求,需要实现无刷新上传图片,在网上找了好多例子都不是很好 最总让我找到了Struts2 +jquery+ajaxfileupload 方式,个人尝试下来比较的不错。

所用到的包和文件

struts2 core所有核心包和truts2-json-plugin 插件

ajaxfileupload.js文件

jquery.js 文件  我使用的是jquery.1.2.1.js

jsp页面代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


	
		
		Insert title here
		
		
		
	
	
		
		
		

 action代码

package com.ajaxfile.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class FileAction extends ActionSupport {

	private File file;
	private String fileFileName;
	private String fileFileContentType;

	private String message = "上传图片成功";
	
	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}

	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileFileContentType() {
		return fileFileContentType;
	}

	public void setFileFileContentType(String fileFileContentType) {
		this.fileFileContentType = fileFileContentType;
	}

	@SuppressWarnings("deprecation")
	@Override
	public String execute() throws Exception {		
		String path = ServletActionContext.getRequest().getRealPath("/upload");
		try {
			File f = this.getFile();
			if(this.getFileFileName().endsWith(".exe")){
				message="文件错误";
				return ERROR;
			}
			FileInputStream inputStream = new FileInputStream(f);
			FileOutputStream outputStream = new FileOutputStream(path + "/"+ this.getFileFileName());
			byte[] buf = new byte[1024];
			int length = 0;
			while ((length = inputStream.read(buf)) != -1) {
				outputStream.write(buf, 0, length);
			}
			inputStream.close();
			outputStream.flush();
			this.setMessage("http://10.1.2.121:8080/ajaxfile/upload/"+this.getFileFileName());
		} catch (Exception e) {
			e.printStackTrace();
			message = "上传异常!!!!";
		}
		return SUCCESS;
	}

}


struts2配置文件




	
		
			
        		text/html
        	
        	
        		text/html
        	
		
	
    
注意:在引入js文件的时候需要先引入jquery.js文件, ajaxfileupload.js依赖jquery文件。

你可能感兴趣的:(jquery,java基础)