<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ajaxFileUpload文件上传例子</title> <script type="text/javascript" src="<%=baseURL%>/kinth/js/ajaxfileupload.js"></script> <script type="text/javascript"> var flag=0; //flag作用:分两种情况提交信息,如果是修改操作,没有修改上传文件,只修改其他字段的信息时点保存也能提交信息 function uploadFile(){ $.ajaxFileUpload({ url:baseURL+ "/fileCatalog.do?method=save", //需要链接到服务器地址 secureuri:true, fileElementId:'file', //文件选择框的id属性 success: function(data, status){ var results = $(data).find('body').html(); var obj = eval("("+results+")"); $("#fileSize").val(obj.fileSize); $("#fileUrl").val(obj.fileUrl); $('#fileCatalogForm').submit(); },error: function (data, status, e){ showDialogWithMsg('ideaMsg','提示','文件错误!'); } }); } function getFileName(obj) { flag=1; var pos = -1; if(obj.value.indexOf("/") > -1){ pos = obj.value.lastIndexOf("/")*1; }else if(obj.value.indexOf("\\") > -1){ pos = obj.value.lastIndexOf("\\")*1; } var fileName = obj.value.substring(pos+1); $("#fileName").val(fileName); $('.files').text(fileName); } function ev_save(){ if(submitMyForm('fileCatalogForm')){ if(flag==0){ $('#fileCatalogForm').submit(); }else{ uploadFile(); } } } function ev_back(){ window.location.href=baseURL+'/fileCatalog.do?method=list'; } </script> </head> <body> <html:form styleId="fileCatalogForm" action="/fileCatalog.do?method=save&fileFlag=true" method="post" enctype="application/x-www-form-urlencoded" style="text-align:left;"> <table> <tr> <td>附件上传:</td> <td style="text-align:left;" id="fileTd"> <input type="file" name="file" id="file" onChange="getFileName(this);" /><br /> </td> <td colspan="2" class="tdr"> <ol class=files> <c:if test="${entity.resourceId != null && entity.resourceId != ''}"><li> ${entity.fileName} 上传成功</li></c:if> </ol> </td> </tr> <c:if test="${entity.resourceId == null || entity.resourceId == ''}"> <input type="text" name="fileSize" id="fileSize" > </c:if> <input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" </table> </html:form> </body>
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jqueryUploadify文件上传例子</title> <script type="text/javascript" src="<%=baseURL %>/kinth/common/js/jquery.validate.js" ></script> <!-- 附件上传 --> <link href="<%=baseURL%>/kinth/common/jqueryUpload/uploadify.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="<%=baseURL%>/kinth/common/jqueryUpload/swfobject.js"></script> <script type="text/javascript" src="<%=baseURL%>/kinth/common/jqueryUpload/jquery.uploadify.v2.0.3.min.js"></script> <script type="text/javascript"> var flag=0; $(document).ready(function() { $("#files").uploadify({ 'uploader' : '<%=baseURL%>/kinth/common/jqueryUpload/uploadify.swf', 'script' : '<%=baseURL%>/fileCatalog.do?method=fileUpload', 'cancelImg' : '<%=baseURL%>/kinth/common/jqueryUpload/cancel.png', 'queueID' : 'fileQueue', 'scriptData' : {'resourceId' : $('#resourceId').val()}, 'auto' : false, 'multi' : false, 'buttonText' : 'Brower file', onComplete: function (evt, queueID, fileObj, response, data) { $('#fileUrl').attr("value",response); $('<li></li>').appendTo('.files').text(fileObj.name+"上传成功"); $('#fileCatalogForm').submit(); }, onSelect: function(evt,queueID, fileObj){ flag=1; var filename = fileObj.name; $('#fileName').attr("value",filename.substring(0,filename.lastIndexOf("."))); $('#fileSize').attr("value",fileObj.size); }, onError: function(a, b, c, d) { alert("文件上传失败"); } }); }); function myuploadifyUpload(){ $('#files').uploadifyUpload(); } function ev_save(){ if(submitMyForm('fileCatalogForm')){ if(flag==0){ $('#fileCatalogForm').submit(); }else{ myuploadifyUpload(); } } } </script> </head> <body> <html:form styleId="fileCatalogForm" action="/fileCatalog.do?method=save" method="post" enctype="application/x-www-form-urlencoded" style="text-align:left;"> <table> <tr> <td>附件上传:</td> <td style="text-align:left;" > <input type="file" name="files" id="files" /><br /> ${entity.fileName} <input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" /> <div id="fileQueue"></div> <ol class=files></ol> <p> <a href="javascript:jQuery('#files').uploadifyClearQueue()">取消所有上传</a> </p> </td> </tr> <c:if test="${entity.resourceId == null || entity.resourceId == ''}"> <input type="text" name="fileSize" id="fileSize" /> <input type="text" id="fileName" name="fileName" /> </c:if> <input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" </table> </html:form> </body>
package com.kinth.hddpt.file.action; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import com.gdcn.bpaf.common.base.search.MyCriteria; import com.gdcn.bpaf.common.base.search.MyCriteriaFactory; import com.gdcn.bpaf.common.base.service.BaseService; import com.gdcn.bpaf.common.helper.PagerList; import com.gdcn.bpaf.common.helper.WebHelper; import com.gdcn.bpaf.common.taglib.SplitPage; import com.gdcn.bpaf.security.model.LogonVO; import com.gdcn.components.appauth.common.helper.DictionaryHelper; import com.kinth.common.base.action.BaseAction; import com.kinth.hddpt.file.action.form.FileCatalogForm; import com.kinth.hddpt.file.model.FileCatalog; import com.kinth.hddpt.file.service.FileCatalogService; import com.kinth.hddpt.file.util.MyZTreeNode; /** * <p> * description: “文件上传的Struts层请求处理类” * </p> * @date : 2013-1-14 */ public class FileCatalogAction extends BaseAction<FileCatalog> { @SuppressWarnings("unused") private static Log log = LogFactory.getLog(FileCatalogAction.class); // 日志记录 private FileCatalogService fileCatalogService; // 删除记录的同时删除相应文件 public ActionForward fileDelete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String[] id = request.getParameterValues("resourceId"); if (id != null && id[0].contains(",")) { id = id[0].split(","); } String[] fileUrls = new String[id.length]; for (int j = 0; j < id.length; j++) { fileUrls[j] = fileCatalogService.findObject(id[j]).getFileUrl(); if (!isEmpty(fileUrls[j])) { // 如果该文件夹不存在则创建一个uptext文件夹 File fileup = new File(fileUrls[j]); if (fileup.exists() || fileup != null) { fileup.delete(); } } fileCatalogService.deleteObject(id[j]); } setAllActionInfos(request); return list(mapping, form, request, response); } @Override public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String id = request.getParameter("resourceId"); Boolean fileFlag = Boolean.valueOf(request.getParameter("fileFlag")); if(fileFlag != null && fileFlag == true){ return super.save(mapping, form, request, response); }else{ String fileUrl = this.fileUpload(form, request, id, fileFlag); response.setContentType("text/html"); response.setCharacterEncoding("GBK"); response.setHeader("Charset", "GBK"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write(fileUrl); response.getWriter().flush(); } return null; } @SuppressWarnings("unchecked") public String fileUpload(ActionForm form,HttpServletRequest request,String id,Boolean fileFlag) throws FileNotFoundException, IOException{ request.setCharacterEncoding("GBK"); String basePath = getServlet().getServletConfig().getServletContext().getRealPath("")+"/"; String filePath = "uploads/"; // 获取项目根路径 ; /*注释部分对应jquery upload uploadify插件的后台代码,只是还存在编码问题,默认为utf-8 String savePath = getServlet().getServletConfig().getServletContext().getRealPath(""); // 获取项目根路径 savePath = savePath + "\\uploads\\"; //读取上传来的文件信息 Hashtable<String, FormFile> fileHashtable = form.getMultipartRequestHandler().getFileElements(); Enumeration<String> enumeration = fileHashtable.keys(); enumeration.hasMoreElements(); String key = (String) enumeration.nextElement(); FormFile formFile = (FormFile)fileHashtable.get(key); String filename = formFile.getFileName().trim(); //文件名 filename = new EncodeChange().changeCode(filename); String filetype = filename.substring(filename.lastIndexOf(".") + 1);//文件类型 savePath = savePath+filetype+"\\"; System.out.println("path:"+savePath); String realPath = savePath + filename; //真实文件路径 //如果该文件夹不存在则创建一个文件夹 File fileup = new File(savePath); if(!fileup.exists()||fileup==null){ fileup.mkdirs(); } if (!filename.equals("")) { // 在这里上传文件 InputStream is = formFile.getInputStream(); OutputStream os = new FileOutputStream(realPath); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = is.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); is.close(); //如果是修改操作,则删除原来的文件 String id = request.getParameter("resourceId"); if (!isEmpty(id)) { FileCatalog fileCatalog = fileCatalogService.findObject(id); String fileUrl = fileCatalog.getFileUrl(); if (!isEmpty(fileUrl)) { File filedel = new File(fileUrl); if(filedel.exists()||filedel!=null){ filedel.delete(); } } request.setAttribute("entity", fileCatalog); } response.getWriter().print(realPath);// 向页面端返回结果信息 }*/ // 读取上传来的文件信息 Hashtable<String, FormFile> fileHashtable = form.getMultipartRequestHandler().getFileElements(); Enumeration<String> enumeration = fileHashtable.keys(); enumeration.hasMoreElements(); String key = (String) enumeration.nextElement(); FormFile formFile = (FormFile) fileHashtable.get(key); String filename = formFile.getFileName().trim(); // 文件名 String filetype = filename.substring(filename.lastIndexOf(".") + 1);// 文件类型 Integer fileSize = formFile.getFileSize(); filePath += Calendar.getInstance().get(Calendar.YEAR)+"/"+filetype+"/" ; String realPath = basePath+filePath+filename; // 真实文件路径 if (!filename.equals("")) { // 如果是修改操作,则删除原来的文件 if (!isEmpty(id)) { FileCatalog fileCatalog = fileCatalogService.findObject(id); String fileUrl = fileCatalog.getFileUrl(); if (!isEmpty(fileUrl)) { fileUrl = basePath + fileUrl; File filedel = new File(fileUrl); if (filedel.exists() || filedel != null) { filedel.delete(); } } request.setAttribute("entity", fileCatalog); } // 如果该文件夹不存在则创建一个文件夹 File fileup = new File(basePath+filePath); if (!fileup.exists() || fileup == null) { fileup.mkdirs(); } // 在这里上传文件 InputStream is = formFile.getInputStream(); OutputStream os = new FileOutputStream(realPath); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = is.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); is.close(); } filePath += filename; String result = "{\"fileName\":\""+filename+"\",\"fileType\":\""+filetype+"\",\"fileSize\":"+fileSize+",\"fileUrl\":\""+filePath+"\"}"; return result; } public FileCatalogService getFileCatalogService() { return fileCatalogService; } public void setFileCatalogService(FileCatalogService fileCatalogService) { this.fileCatalogService = fileCatalogService; } }
package com.kinth.hddpt.file.action; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /* jqueryUploadify文件上传servlet类,写了此类就可以不用到action中写fileUpload方法了,只是不能把上传的文件保存到数据库中 这种方法记得配置web.xml哦, 如 <!--附件上传开始--> <servlet> <servlet-name>Upload</servlet-name> <servlet-class> com.kinth.hddpt.file.action.UploadController </servlet-class> </servlet> <servlet-mapping> <servlet-name>Upload</servlet-name> <url-pattern>/servlet/fileUpload</url-pattern> </servlet-mapping> <!--附件上传结束--> */ public class UploadController extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); String savePath = this.getServletConfig().getServletContext().getRealPath(""); savePath = savePath + "/uploads/resourses/"; DiskFileItemFactory fac = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fac); upload.setHeaderEncoding("utf-8"); List fileList = null; try { fileList = upload.parseRequest(request); } catch (FileUploadException ex) { ex.printStackTrace(); } Iterator<FileItem> it = fileList.iterator(); String name = ""; String extName = ""; String category = ""; while (it.hasNext()) { FileItem item = it.next(); if (item.isFormField()) { if ("category".equals(item.getFieldName())) { category = item.getString("utf-8"); } } else if (!item.isFormField()) { name = item.getName(); if (name == null || name.trim().equals("")) { continue; } // 扩展名格式: if (name.lastIndexOf(".") >= 0) { extName = name.substring(name.lastIndexOf(".")); } savePath = savePath + category + "/"; File f1 = new File(savePath); if (!f1.exists()) { f1.mkdirs(); } File saveFile = new File(savePath + name); try { item.write(saveFile); } catch (Exception e) { e.printStackTrace(); } } } response.getWriter().print(name + " 上传成功"); } }
相关推荐
在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键功能。 首先,我们要知道ASP.NET中的`<asp:FileUpload>`控件是实现文件上传的核心组件。它可以允许用户从本地...
本示例探讨的是"C#多文件上传"的功能,它实现了用户在无需页面刷新的情况下,能够上传多个文件。这种技术在现代Web应用中非常常见,可以提升用户体验,因为用户不必等待每次上传文件后页面的重新加载。 无刷新多...
5. **异步文件上传**: 使用`FormData`对象和`$.ajax()`,可以在AJAX请求中上传文件: ```javascript var formData = new FormData($('#yourForm')[0]); $.ajax({ url: 'your_server_url', type: 'POST', ...
在这个例子中,'uploader'指定了SWF文件的位置,'script'是处理文件上传的服务器端脚本,'folder'是文件上传的目标目录,而'multi'参数设置为true允许用户选择多个文件进行上传。 综上所述,jQuery结合其Validation...
常见的jQuery文件上传插件有jQuery File Upload、Plupload等。这些插件支持多文件选择、进度条显示、预览、取消上传等功能,大大提升了用户体验。在实际应用中,我们需要创建一个HTML表单,添加input元素类型为file...
本教程将探讨两种不同的客户端上传方式:原生JavaScript和jQuery AJAX。这两种方法都可以与Asp.Net WebApi结合,实现用户友好的文件上传功能。 首先,我们要理解Asp.Net WebApi的核心概念。WebApi是一个用于构建...
《Javascript和jQuery结合运用的例子——网络相册》是曾顺编著的一本实践教程,它深入浅出地探讨了如何将这两种强大的JavaScript技术融合应用于实际项目中,特别是以创建一个网络相册为例,展示了从需求分析到功能...
本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通文件上传。在Spring MVC中,我们可以利用`@RequestParam`注解接收上传的文件。在HTML表单中,我们需要设置`enctype="multipart/form-data"`...
为了兼容这两种情况,我们可以使用条件语句或者使用像jQuery这样的库来抽象出浏览器差异: ```javascript var fileInput = document.getElementById('fileInput'); if (fileInput.addEventListener) { fileInput....
- 异步处理:使用异步操作处理文件上传,提高用户体验。 - 错误处理:添加适当的错误处理机制,以处理上传失败的情况。 5. **性能优化**: - 分块上传:对于大文件,可以考虑分块上传,减少内存占用和提高上传...
为了在前端实现文件上传,我们可以利用各种开源插件,如jQuery File Upload、Plupload或Dropzone.js等。这些插件提供了丰富的功能,包括多文件选择、进度条显示、文件类型和大小限制等。在我们的场景中,我们可以...
在这个精简版的文件上传实例中,开发者利用了这两种技术的优势,创建了一个对初学者友好的源码示例。 ASP.NET是由微软开发的一个强大的Web应用程序框架,它允许开发者使用.NET Framework的多种编程语言(如C#或VB...
2. **动画效果**:`.slideUp()`和`.slideDown()`是jQuery提供的两种基本动画效果,分别用于隐藏和显示元素。通过配合使用这两个方法,可以实现上下切换的效果。 3. **CSS操作**:可能需要使用`.css()`方法来改变...
7.10 综合案例分析—使用uploadify插件实现文件上传功能 /232 7.10.1 需求分析/232 7.10.2 效果界面/233 7.10.3 功能实现/234 7.10.4 代码分析/236 7.11 本章小结/241 第8章 jQuery UI插件/242 8.1 认识...
两种方式都是异步提交表单,但有以下几点不同: 1. **调用方式**:第一种方式是直接调用`$.ajax`,而第二种方式是先调用`$.ajaxSubmit`,这个方法是`jquery.form.js`插件提供的,它简化了表单提交的流程。 2. **...
本文将详细解读如何使用jQuery来实现文件上传时对文件大小和类型的校验。这是一个实用的前端技术点,它确保了上传到服务器的文件符合预设的规范,避免了因文件类型或大小不当而引发的问题。 首先,我们看到文件中...
总的来说,"C#文件上传案例.zip"涵盖了前端与后端协同进行文件上传的基本流程和两种实现方式。无论选择Base64编码还是使用插件,都需要确保跨域、安全性(防止XSS和CSRF攻击)以及错误处理等方面的考虑。在实际项目...
在ASP.NET中实现大文件上传是一项常见的需求,尤其是在处理用户提交的多媒体内容或者大型数据文件时。本篇文章将深入探讨如何在ASP.NET环境下构建大文件上传功能,包括关键的技术点、注意事项以及示例代码。 首先,...
在实现文件上传功能时,我们通常会遇到单文件上传和多文件上传两种情况。HTML5中对文件上传进行了增强,通过添加`<input>`元素的`multiple`属性,我们可以实现多文件选择上传。在前端获取用户选择的文件后,需要构建...