ajaxfileupload+struts2文件上传、下载

前台页面:

html:
<input id="uploadToImportFile" type="file" name="file" style="width:200px;"/>
<input input type="button" value="上传" οnclick="contactAjaxFileUpload(this)"/>

JS:

               //验证文件类型
                function isLegalFiletype(filename) {
            		var pattern = /(.jpg|.zip|.html|.htm)$/;
            		if (!pattern.exec(filename)) {
            			alert("文件格式不正确!");
            			return false;
            		}
            		return true;
            	}

            	function contactAjaxFileUpload(obj) {
            		if (isLegalFiletype($("#uploadToImportFile").val())) {
            			$.ajaxFileUpload({
            				url : '<%= request.getContextPath()%>/userinfo/fileupload!upload.do', //服务器地址
            				secureuri : false,// 一般设置为false
            				fileElementId : 'uploadToImportFile', // 文件上传控件的id属性 <input
            				dataType : 'json',
            				//可携带参数 data:{"type":type},
            				success : function(data) { // 服务器成功响应处理函数
            					if(data.success){
            					}else{
            						alert(data.message);
            					}
            					return;
            				},
            				error : function(data, e) {
            					alert("上传失败 "+e);
            					return;
            				}
            			});
            		}
            	}
                //文件下载
                function getFile(filename){
    if(filename!=null&&filename!=''){
        window.open(encodeURI("<%= request.getContextPath()%>/userinfo/fileupload!getFj.do?filename="+filename));
    }else{
        alert('文件不存在');
    }
}

后台Action

public class FileUploadAction extends SimpleActionSupport{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2542938870216611337L;

	private String sp = File.separator;

	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", "resource" })
	    public void upload() throws Exception {
	    	response.setContentType("text/html;charset=UTF-8");
			Map<String, Object> result = new HashMap<String, Object>();
	     
	        try {
	            File f = this.getFile();
	            FileInputStream fis = new FileInputStream(f);
	            int a = fis.available();
	            if(a>2097152){
	            	message="对不起,请上传少于2M的文件!!!";
					result.put("success", false);
					result.put("message", message);
					response.getWriter().print(JSONObject.fromObject(result));
	                return;
	            }
	            if(this.getFileFileName().endsWith(".exe")){
	                message="对不起,你上传的文件格式不允许!!!";
					result.put("success", false);
					result.put("message", message);
					response.getWriter().print(JSONObject.fromObject(result));
	                return;
	            }
	            String p =sp+userinfoId+sp;
	            File ff = new File(path+p);
	            if(!ff.exists()){
	            	ff.mkdirs();
	            }
	            String pp = p+new Date().getTime()+this.getFileFileName().substring(this.getFileFileName().lastIndexOf("."));
	           
	            FileInputStream inputStream = new FileInputStream(f);
	            FileOutputStream outputStream = new FileOutputStream(path+pp);
	            byte[] buf = new byte[1024];
	            int length = 0;
	            while ((length = inputStream.read(buf)) != -1) {
	                outputStream.write(buf, 0, length);
	            }
	            inputStream.close();
	            outputStream.flush();
	            result.put("success", true);
				result.put("id", id);
				response.getWriter().print(JSONObject.fromObject(result));
	        } catch (Exception e) {
	            e.printStackTrace();
	            result.put("error", true);
				result.put("message", message);
				response.getWriter().print(JSONObject.fromObject(result));
	            return;
	        }
	    }
	    
	    //文件下载
	    @SuppressWarnings("resource")
	  		public void getFj(){
	  	    	try {
	  		        String filename = request.getParameter("filename");//文件路径
	  		        File f = new File(filename);
	  		        if(f.exists()){
	  		        	response.setContentLength((int)f.length());
	  					String parameter = "filename=" + f.getName();
	  					response.setHeader("Content-disposition", new String(parameter.getBytes("GB2312"), "ISO8859_1"));
	  					OutputStream os = response.getOutputStream();
	  					FileInputStream fis= new FileInputStream(f);
	  					byte[] b = new byte[512];
	  					int length;
	  					while((length = fis.read(b)) > 0){
	  						os.write(b, 0, length);
	  					}
	  					os.flush();
	  					os.close();
	  		        }else{
	  		        	JsonResult.err("文件不存在");
	  		        	return ;
	  		        }
	  	    	} catch (Exception e) {
	  	    		JsonResult.err(e.getMessage());
	  			}  
	  	    }

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值