文件上传:Fileupload,AjaxFileUpload

简介:

方式一:利用commons下面的fileupload进行上传

步骤1:添加依赖

 
  1. <dependency> 
  2.         <groupId>com.alibaba.external</groupId> 
  3.         <artifactId>jakarta.commons.fileupload</artifactId> 
  4.         <version>1.2.1</version> 
  5.     </dependency> 

步骤2:在jsp页面中添加上传文件,使用enctype="multipart/form-data"

 
  1. <form method="post" action="/FileUploadServlet" enctype="multipart/form-data"> 
  2.         fileupload:<input name="filename" type="file"> <br> 
  3.         name:<input name="name" type="text" value="zhangsan"><br>  
  4.         <input name="sub" type="submit" value="提交"> 
  5.     </form> 

步骤3:在servlet中处理文件上传,参考官方文档:http://commons.apache.org/fileupload/using.html

 
  1. FileItemFactory factory = new DiskFileItemFactory(); 
  2. ServletFileUpload upload = new ServletFileUpload(factory); 
  3. try { 
  4.     List items = upload.parseRequest(request); 
  5.     Iterator iter = items.iterator(); 
  6.     while (iter.hasNext()) { 
  7.         FileItem item = (FileItem) iter.next(); 
  8.         if (item.isFormField()) { 
  9.             System.out.println("isFormField----" + item.getName()); 
  10.         } else { 
  11.             String fullPathName = item.getName(); 
  12.             String filename = this.getServletContext().getRealPath( 
  13.                     "upload"
  14.                     + File.separator 
  15.                     + new Date().getTime() 
  16.                     + fullPathName.substring(fullPathName 
  17.                             .lastIndexOf(".")); 
  18.             File file = new File(filename); 
  19.             try { 
  20.                 item.write(file); 
  21.             } catch (Exception e) { 
  22.                 e.printStackTrace(); 
  23.             } 
  24.         } 
  25.     } 
  26.     request.getRequestDispatcher("pages/s5_result.jsp").forward( 
  27.             request, response); 
  28. catch (FileUploadException e) { 
  29.     e.printStackTrace(); 

步骤4:在web.xml中添加servlet mapping

 
  1. <servlet> 
  2.     <servlet-name>FileUploadServlet</servlet-name> 
  3.     <servlet-class>com.alibaba.upload.FileUploadServlet</servlet-class> 
  4. </servlet> 
  5. <servlet-mapping> 
  6.     <servlet-name>FileUploadServlet</servlet-name> 
  7.     <url-pattern>/FileUploadServlet</url-pattern> 
  8. </servlet-mapping> 

方式2:使用jquery的ajaxfileupload插件怎么实现异步上传:AjaxFileUpload

页面代码:

 
  1. <html> 
  2.     <!-- 引入相关的js文件,相对路径  --> 
  3.     <script type="text/javascript" src="js/jquery.js"></script> 
  4.       <script type="text/javascript" src="js/ajaxfileupload.js"></script> 
  5.  
  6.     <!-- 执行上传文件操作的函数 --> 
  7.       <script type="text/javascript"> 
  8.           function ajaxFileUpload(){ 
  9.                $.ajaxFileUpload( 
  10.                    { 
  11.                 url:'update.do?method=uploader',            //需要链接到服务器地址 
  12.                 secureuri:false, 
  13.                 fileElementId:'houseMaps',                        //文件选择框的id属性 
  14.                 dataType: 'xml',                                     //服务器返回的格式,可以是json 
  15.                 success: function (data, status)            //相当于java中try语句块的用法 
  16.                 {       
  17.                     $('#result').html('添加成功'); 
  18.                 }, 
  19.                 error: function (data, status, e)            //相当于java中catch语句块的用法 
  20.                 { 
  21.                     $('#result').html('添加失败'); 
  22.                 } 
  23.             } 
  24.                     
  25.                ); 
  26.                
  27.           } 
  28.       </script> 
  29.   </head> 
  30.    
  31.   <body> 
  32.       <form method="post" action="update.do?method=uploader" enctype="multipart/form-data">   
  33.         <input type="file" id="houseMaps" name="houseMaps"/>  
  34.         <input type="button" value="提交" onclick="ajaxFileUpload()"/> 
  35.     </form>  
  36.     <div id="result"></div> 
  37.      
  38.   </body> 
  39. </html> 

 

服务器代码:

 
  1. public class UpdateAction extends DispatchAction { 
  2.  
  3.     public ActionForward uploader(ActionMapping mapping, ActionForm form, 
  4.             HttpServletRequest request, HttpServletResponse response) { 
  5.         UpFormForm upFormForm = (UpFormForm) form; 
  6.         FormFile ff = upFormForm.getHouseMaps(); 
  7.         try { 
  8.             InputStream is = ff.getInputStream(); 
  9.             File file = new File("D:/" + ff.getFileName());            //指定文件存储的路径和文件名 
  10.             OutputStream os = new FileOutputStream(file); 
  11.              
  12.             byte[] b = new byte[1024]; 
  13.             int len = 0
  14.             while((len = is.read(b)) != -1){ 
  15.                 os.write(b, 0, len); 
  16.             } 
  17.             os.close(); 
  18.             is.close(); 
  19.         } catch (Exception e) { 
  20.             e.printStackTrace(); 
  21.              
  22.         } 
  23.          
  24.         return null
  25.     } 



 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/678115,如需转载请自行联系原作者

相关文章
|
11月前
|
人工智能 API 开发者
阿里CEO吴泳铭-2024互联网大会发言:AI的最大价值是推动生产力变革
11月21日,2024年世界互联网大会“互联网企业家论坛”在乌镇召开。阿里巴巴CEO吴泳铭表示,AI的最大价值在于推动各行各业的生产力变革,而非仅限于开发超级APP。他强调,发展AI需建设繁荣的技术、产品和市场生态。目前,30多万家企业已接入阿里“通义”大模型,应用于代码开发、药物研发等场景。阿里巴巴坚持开源路线,全球开发者基于“通义千问”开发的衍生模型已突破7.8万个。吴泳铭认为,AI的发展需要行业共同努力,建设繁荣生态以实现高质量持续发展。
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
AI在自然语言处理中的突破:从理论到应用
AI在自然语言处理中的突破:从理论到应用
734 17
|
人工智能 算法 安全
探索量子计算:从基础原理到未来应用
探索量子计算:从基础原理到未来应用
|
传感器 人工智能 物联网
数字孪生在航空航天领域的应用
数字孪生技术在航空航天领域的应用日益广泛,从设计、制造、测试到运营和维护,全面革新了传统工作模式。通过创建物理实体的虚拟复制品,实现实时模拟、预测和优化,显著提升产品性能、安全性和经济效益。具体案例如嫦娥五号探测器和C919客机的成功应用,展示了数字孪生技术的巨大潜力和未来前景。
|
机器学习/深度学习 人工智能 供应链
深度学习在图像识别中的应用及案例分析
【10月更文挑战第40天】本文将探讨深度学习在图像识别领域的应用,通过分析其基本原理、关键技术和实际应用案例,揭示深度学习如何革新了图像处理技术。文章不仅提供理论框架,还深入讨论了深度学习模型如卷积神经网络(CNN)的构建和训练过程,以及这些技术如何在自动驾驶汽车、医疗诊断等多个领域得到实际应用。通过具体案例,我们将看到深度学习如何使机器视觉更加精准和高效。
831 1
|
XML 缓存 JavaScript
一篇文章讲明白JS模板引擎之JST模板
一篇文章讲明白JS模板引擎之JST模板
278 2
|
UED 开发者 异构计算
浏览器刷新率是什么?
【5月更文挑战第29天】浏览器刷新率是什么?
854 1
|
开发框架 前端开发 JavaScript
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
|
Python
Python 合并多个 PDF 文件并建立书签目录
Python 合并多个 PDF 文件并建立书签目录
328 1

热门文章

最新文章