ssh和ajax上传文件
2015-10-27 17:25
176 查看
ssh3中利用ajaxfileupload无刷新上传文件
![](http://www.thinksaas.cn/cache/user/0/10/120/10001.png)
开源中国
发表于 2014-09-03 20:29:181.jsp代码:( 注意这里的jquery只能用1.2.1,我试了1.3.2会报错:( )<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <link rel="stylesheet"href="../js/ajaxfileupload/ajaxfileupload.css"type="text/css"title='main' media=&quo 4000 t;screen"/> <script src="../js/json.js"type="text/javascript"></script> <script src="../js/ajaxfileupload/jquery.js"type="text/javascript"></script> <script src="../js/ajaxfileupload/ajaxfileupload.js"type="text/javascript"></script> <title>haha</title> </head> <body> <form action=""enctype="multipart/form-data"> <input type="file"name="upload"id="upload"/><input type="button"value="upload"onclick="javascript:upload_files();"/><p/> </form> <img id="loading"src="../images/loading.gif"style="display:none;"/> </body> <script> function upload_files(){ $("#loading") .ajaxStart(function(){ $(this).show(); }) .ajaxComplete(function(){ $(this).hide(); }); $.ajaxFileUpload ( { url:'../demo/test!ajax_upload?id=1', secureuri:false, fileElementId:'upload', dataType: 'json', success: function (data, status) { alert( data.resultText); alert( data.extra ); }, error: function (data, status, e) { alert(e); } } ) } </script> </html>action代码:
package com.prl.action.demo; import java.io.File; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.convention.annotation.ParentPackage; import org.json.JSONObject; import org.springside.modules.web.struts2.Struts2Utils; import com.prl.action.BaseAction; import com.prl.common.CommonUtil; import com.prl.helper.JsonResult; @ParentPackage(value="noneedlogin") public class TestAction extends BaseAction{ private File upload; private String uploadFileName; private String uploadUploadContentType; private Long id ; public String ajax_demo(){ HttpServletRequest request = Struts2Utils.getRequest(); CommonUtil.printAllParam(request); System.out.println("jsonString==============="+request.getParameter("toJSONString")); JsonResult jsonResult = new JsonResult("0","成功"); Struts2Utils.renderText(new JSONObject(jsonResult).toString()); return null; } public String ajax_upload(){ System.out.println("id========="+id); System.out.println("uploadFileName========="+uploadFileName); JsonResult jsonResult = new JsonResult("0","成功"); //前台的ajax.upload.js框架可能有bug,导致这个地方必须用renderHtml,不能用其它的 Struts2Utils.renderHtml(new JSONObject(jsonResult).toString()); //Struts2Utils.renderText(new JSONObject(jsonResult).toString()); //Struts2Utils.renderJson(jsonResult); return null; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String getUploadUploadContentType() { return uploadUploadContentType; } public void setUploadUploadContentType(String uploadUploadContentType) { this.uploadUploadContentType = uploadUploadContentType; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } } ----------------------------------------------------------------------------------------------SSH总结(二)
1、文件的操作,读写文件,解决乱码问题读文件
1 // myFile属性用来封装上传的文件 2 private File myFile; 3 4 // myFileContentType属性用来封装上传文件的类型 5 private String myFileContentType; 6 7 // myFileFileName属性用来封装上传文件的文件名 8 private String myFileFileName; 9 InputStream is; 10 try { 11 is = new FileInputStream(myFile); 12 // 设置上传文件目录 13 String uploadPath = TemplateUtils.BASEPATH + "\\upload"; 14 // 重命名文件 15 String fileName = StringUtils.getUUID() + this.getMyFileFileName().substring(myFileFileName.lastIndexOf("."), myFileFileName.length()); 16 // 设置目标文件 17 File toFile = new File(uploadPath, fileName); 18 // 创建一个输出流 19 OutputStream os = new FileOutputStream(toFile); 20 // 设置缓存 21 byte[] buffer = new byte[1024]; 22 int length = 0; 23 // 读取myFile文件输出到toFile文件中 24 while ((length = is.read(buffer)) > 0) { 25 os.write(buffer, 0, length); 26 } 27 // 关闭输入流 28 is.close(); 29 // 关闭输出流 30 os.close();
---------------------------------------------------------------------------------------------
JQuery和Struts实现Ajax文件上传
首先说下使用的框架和插件:struts1.3 jQuery1.3 ajaxupload.3.2.js(一个JQuery的插件,实现Ajax上传的效果)COS(O’relly的一个性能很棒的上传组件)jsp页面:<%@ page language="java" pageEncoding="UTF-8"%><%@ include file="../../common/taglibs.jsp" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><script type="text/javascript" src="${basePath }/script/jquery.js"></script><script type="text/javascript" src="${basePath }/script/ajaxupload.3.2.js"></script><title>Ajax文件上传示例</title><style type="text/css">#loading,ol{font-size:14px;display:none;color:orange;display:none;}ol{display:block;}</style><script type="text/javascript">$(function(){new AjaxUpload("#fileButton",{action:"${basePath}/file.do?method=upload",autoSubmit:true,name:"myfile",onSubmit:function(file, extension){if (extension && /^(pdf|jpg|png|jpeg|gif)$/.test(extension)){$("#loading").html('<img src="${basePath}/images/loading.gif">');$("#loading").show();$("#fileButton").attr("disabled","disabled");}else{$("#loading").html("你所选择的文件不受系统支持");$("#loading").show();return false;}},onComplete:function(file, extension){$("#loading").html("文件上传成功");$("#loading").show();$("#fileButton").removeAttr("disabled");}});new Ajax_upload('#button3', {action: '${basePath}/file.do?method=upload',name: 'myfile',autoSubmit:true,onComplete : function(file, extension){$('<li></li>').appendTo($('.files')).text(file);}});});</script></head><body><input type="button" value="请选择您的照片" id="fileButton"/><div id="loading"><img src="${basePath}/images/loading.gif"></div><hr/><form action="#" method="post"><input id="button3" type="file" /><p>上传成功的文件有:</p><ol class="files"></ol><p><input class="submit" type="submit" value="表单提交"/></p></form></body></html>StrutsAction代码:
package com.kay.crm.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.springframework.stereotype.Controller;import com.kay.common.util.CosUtil;@Controller("/file")public class FileUploadAction extends DispatchAction {public ActionForward upload(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {String fileName = CosUtil.upload(request);System.out.println(fileName);return null;}}
Cos的工具类:
package com.kay.common.util;import java.io.File;import java.io.IOException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import com.oreilly.servlet.MultipartRequest;public class CosUtil {@SuppressWarnings({ "deprecation", "unchecked" })public static String upload(HttpServletRequest request) throws IOException{//存绝对路径//String filePath = "C://upload";//存相对路径String filePath = request.getRealPath("/")+"upload";File uploadPath = new File(filePath);//检查文件夹是否存在 不存在 创建一个if(!uploadPath.exists()){uploadPath.mkdir();}//文件最大容量 5Mint fileMaxSize = 5*1024*1024;//文件名String fileName = null;//上传文件数int fileCount = 0;//重命名策略RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();//上传文件MultipartRequest mulit = new MultipartRequest(request,filePath,fileMaxSize,"UTF-8",rfrp);String userName = mulit.getParameter("userName");System.out.println(userName);Enumeration filesname = mulit.getFileNames();while(filesname.hasMoreElements()){String name = (String)filesname.nextElement();fileName = mulit.getFilesystemName(name);String contentType = mulit.getContentType(name);if(fileName!=null){fileCount++;}System.out.println("文件名:" + fileName);System.out.println("文件类型: " + contentType);}System.out.println("共上传" + fileCount + "个文件!");return fileName;}}
Cos上传组件用到的重命名策略类:
package com.kay.common.util;import java.io.File;import java.util.Date;import com.oreilly.servlet.multipart.FileRenamePolicy;public class RandomFileRenamePolicy implements FileRenamePolicy {public File rename(File file) {String body="";String ext="";Date date = new Date();int pot=file.getName().lastIndexOf(".");if(pot!=-1){body= date.getTime() +"";ext=file.getName().substring(pot);}else{body=(new Date()).getTime()+"";ext="";}String newName=body+ext;file=new File(file.getParent(),newName);return file;}}
相关文章推荐
- Android中dp和px之间进行转换
- springmvc+Freemarker配置说明详解1
- 移动端各屏幕尺寸
- Xml字符串和Java对象转换利器——XStream
- NFV之OpenWRT IN OpenStack的实践
- python学习记录之1027
- 20135202闫佳歆-第四章家庭作业-4.47+4.48
- iOS 3D Touch 适配开发
- 《大道至简》第五章读后感
- respondsToSelector相关的方法
- js中的alert
- Java基础学习10(二维数组)
- Android NDK 开发 调试的几个坑 ??:?
- maven的UnsupportedClassVersionError
- atal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
- Android控件之ListView(二)
- 2015 南阳 CCPC G.Ancient Go
- maven的UnsupportedClassVersionError
- Android开发,调用相册图片或者调用相机进行拍照获取图片
- Qt+VS2010配置及开发环境搭建