加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

利用ajax上传文件到服务器(服务端用的是Struts2)1.

发布时间:2020-12-16 01:39:15 所属栏目:百科 来源:网络整理
导读:1.html代码 !DOCTYPE htmlhtmlheadtitle/titlemeta http-equiv="Content-Type" content="text/html; charset=UTF-8"!-- 引入相关的js文件,相对路径 --script src="jquery/jquery-1.10.2.js"/scriptscript type="text/javascript" src="jquery/ajaxfileuploa

1.html代码

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- 引入相关的js文件,相对路径  -->
<script src="jquery/jquery-1.10.2.js"></script>
<script type="text/javascript" src="jquery/ajaxfileupload.js"></script>
</head>
<script>
	jQuery(function() {
		$("#button").click(function() {
			//得到上传文件的名称
			var fileName = $("#fileToUpload").val().split("").pop();
			$.ajaxFileUpload({
				url : "api/uploadFile",//处理上传文件url
				secureuri : false,data : {
					name : encodeURI(fileName),//后台接收到的文件名乱码,用URL编码防止乱码,后台用URLDecoder解码
					description : "这是文件描述" //这个也应该用url编码
				},fileElementId : "fileToUpload",//file控件id
				dataType : "json",success : function(data) {
					alert(data);
				},error : function(data) {
					alert(data);
				}
			});
			return false;
		});
	});
</script>
<body>
	<input id="fileToUpload" type="file" name="fileToUpload" class="input">
	<button id="button">上传</button>
</body>
</html>

2.服务端代码(Action代码)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;

import com.opensymphony.xwork2.ActionSupport;

public class ApiAction extends ActionSupport implements RequestAware{
	private static final long serialVersionUID = -5679214991812521127L;
	
	private Map<String,Object> request;
	private File fileToUpload;
	private String name;
	private String description;
	public Map<String,Object> responseJson = new HashMap<String,Object>();

	public String handleFile(){
		try {
			//解决传递过来的文件名乱码问题
			String fileName = URLDecoder.decode(name,"UTF-8");  
			FileInputStream inputStream = new FileInputStream(fileToUpload);
	        FileOutputStream outputStream = new FileOutputStream("D:/data/" + fileName);
	        byte[] buf = new byte[1024];
	        int length = 0;
	        while ((length = inputStream.read(buf)) != -1) {
	            outputStream.write(buf,length);
	        }
	        inputStream.close();
	        outputStream.flush();
	        outputStream.close();
	        System.out.println("保存成功。name="+fileName+",description="+description);
	        responseJson.put("msg","保存成功。name="+fileName+",description="+description);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}
	@Override
	public void setRequest(Map<String,Object> request) {
		this.request = request;
	}
	public File getFileToUpload() {
		return fileToUpload;
	}
	public void setFileToUpload(File fileToUpload) {
		this.fileToUpload = fileToUpload;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}

	public Map<String,Object> getResponseJson() {
		return responseJson;
	}

	public void setResponseJson(Map<String,Object> responseJson) {
		this.responseJson = responseJson;
	}
}

3.Struts2配置

返回的是json格式。

 <package name="api" namespace="/api" extends="json-default">
        
        <action name="uploadFile" class="com.alisa.action.ApiAction" method="handleFile">
        	<result name="success" type="json">
        		<param name="root">responseJson</param>
        	</result>
        </action>
    </package>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读