原创

struts2和ajaxfileupload的文件上传

现在文件上传工具多的去(不信你问百度)

所需环境:

jquery.js

ajaxfileupload.js

struts2所依赖的jar包

及struts2-json-plugin-2.1.8.1.jar

1.页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>测试中</title>
 <meta name="keywords" content="随译聊">
    <meta name="description" content="随译聊">

    <link rel="shortcut icon" href="favicon.ico"> <link href="css/bootstrap.min.css?v=3.3.6" rel="stylesheet">
    <link href="css/font-awesome.css?v=4.4.0" rel="stylesheet">

    <link href="css/animate.css" rel="stylesheet">
    <link href="css/style.css?v=4.1.0" rel="stylesheet">
    
    
    
    <!--[if lt IE 9]>
    <meta http-equiv="refresh" content="0;ie.html" />
    <![endif]-->
    <script>if(window.top !== window.self){ window.top.location = window.location;}</script>
     <script type="text/javascript" src="js/jquery.min.js"></script>
     <script type="text/javascript" src="js/bootstrap.min.js"></script>
     <script type="text/javascript" src="js/ajaxfileupload.js"></script>
<script type="text/javascript">
         
function ajaxFileUpload(){    
    $.ajaxFileUpload({
            url:'pc/uploadFile/execute',//用于文件上传的服务器端请求地址
            secureuri:false,//一般设置为false
            fileElementId:'file',//文件上传空间的id属性  <input type="file" id="file" name="file" />
            dataType: 'json',//返回值类型 一般设置为json
            success: function (data, status)  //服务器成功响应处理函数
            {
                alert(data.data.aa);//从服务器返回的json中取出message中的数据,其中message为在struts2中action中定义的成员变量
            },
            error: function (data, status, e)//服务器响应失败处理函数
            {
                alert(e);
            }
      });
}
    
</script>
</head>
<body>
    <input type="file" id="file" name="file" />
     <br />
     <input type="button" value="上传" onclick="return ajaxFileUpload();"> 
</body>
</html>

2.action.upload配置文件(记得自己配置struts2总配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="pc.uploadFile" namespace="/pc/uploadFile" extends="ylr-pc">
        <default-action-ref name="PcUploadFileAction"></default-action-ref>
		
		
		<action name="execute" class="com.ylr.pc.uploadFile.action.PcUploadFileAction" method="execute" >
    	    <result type="ajax" name="success">
                <param name="contentType">
                    text/html
                </param>
            </result>
    	</action>
    	
    </package>
  </struts>

  

  3.后台代码

  
  package com.ylr.pc.uploadFile.action;

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



import obi.you2.common.action.BaseYou2ActionSupport;



public class PcUploadFileAction extends BaseYou2ActionSupport {
	
	private static final long serialVersionUID = 572146812454l;
	
	private File file ; //具体上传文件的 引用 , 指向临时目录中的临时文件  
	private String fileFileName ;  // 上传文件的名字 ,FileName 固定的写法  
	private String fileContentType ; //上传文件的类型, ContentType 固定的写法  
	
	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 getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}

	@Override
	public String execute() throws Exception {
		
		logger.info("文件上传!");
		String[] fileName =  fileContentType.split("/");
		String name = "222222222222222222222" + "." + fileName[1];
		//获取文件存储路径
		String path = "d:\\test\\";
		File filePath = new File(path);
		if(!filePath.exists()){
			filePath.mkdir();
		} 

		//输出流
		OutputStream os = new FileOutputStream(new File(path,name));
		//输入流
		InputStream is = new FileInputStream(file);
		
		byte[] buf = new byte[1024];
		int length = 0 ;
		
		while(-1 != (length = is.read(buf) ) )
		{
			os.write(buf, 0, length) ;
		}
		is.close();
		os.close();
		logger.info("文件上传成功!");
		this.setResult("aa", "8454556dfsds");
		return SUCCESS;
	}

}

注意观察html中的代码,并没有form表单。只是在按钮点击的时候触发ajaxFileUpload()方法。

需要注意的是js文件引入的先后顺序,ajaxfileupload.js依赖于jquery因此你懂的

~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信