AjaxFileUpload+Struts2实现多文件上传功能

这篇文章主要介绍了AjaxFileUpload+Struts2实现多文件上传功能,需要的朋友可以参考下

本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文。

单文件和多文件的实现区别主要修改两点,

一是插件ajaxfileupload.js里接收file文件ID的方式

二是后台action是数组形式接收

1、ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/

2、引入jquery-1.8.0.min.js、ajaxFileUpload.js文件

3、文件上传页面核心代码

        

多文件上传





function fileUpload() { var files = ['file1','file2','file3']; //将上传三个文件 ID 分别为file2,file2,file3 $.ajaxFileUpload( { url : 'fileUploadAction', //用于文件上传的服务器端请求地址 secureuri : false, //一般设置为false fileElementId : files, //文件上传的id属性 dataType : 'json', //返回值类型 一般设置为json success : function(data, status) { var fileNames = data.fileFileName; //返回的文件名 var filePaths = data.filePath; //返回的文件地址 for(var i=0;i<data.fileFileName.length;i++){ //将上传后的文件 添加到页面中 以进行下载 $("#down").after(""+fileNames[i]+ "下载") } } }) }

登录后复制

以上fileElementId属性接收的files参数为[‘file1′,’file2′,’file3’]

由于是多文件,所以我们需要修改ajaxfileupload.js 找到以下代码

var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form);

登录后复制

修改为:

for(var i in fileElementId){    var oldElement = jQuery('#' + fileElementId[i]);    var newElement = jQuery(oldElement).clone();    jQuery(oldElement).attr('id', fileId);    jQuery(oldElement).before(newElement);    jQuery(oldElement).appendTo(form);  }

登录后复制

4、文件上传Action

public class FileAction {   private File[] file;       //文件    private String[] fileFileName;  //文件名     private String[] filePath;    //文件路径   private String downloadFilePath; //文件下载路径   private InputStream inputStream;    /**    * 文件上传    * @return    */   public String fileUpload() {     String path = ServletActionContext.getServletContext().getRealPath("/upload");     File file = new File(path); // 判断文件夹是否存在,如果不存在则创建文件夹     if (!file.exists()) {       file.mkdir();     }     try {       if (this.file != null) {         File f[] = this.getFile();         filePath = new String[f.length];         for (int i = 0; i < f.length; i++) {           String fileName = java.util.UUID.randomUUID().toString(); // 采用时间+UUID的方式随即命名           String name = fileName + fileFileName[i].substring(fileFileName[i].lastIndexOf(".")); //保存在硬盘中的文件名           FileInputStream inputStream = new FileInputStream(f[i]);           FileOutputStream outputStream = new FileOutputStream(path+ "\" + name);           byte[] buf = new byte[1024];           int length = 0;           while ((length = inputStream.read(buf)) != -1) {             outputStream.write(buf, 0, length);           }           inputStream.close();           outputStream.flush();           //文件保存的完整路径           // 如:D:omcat6webappsstruts_ajaxfileupload\upload0be14a1-f99e-4239-b54c-b37c3083134a.png           filePath[i] = path + "\" + name;         }       }     } catch (Exception e) {       e.printStackTrace();     }     return "success";   }   /**    * 文件下载    * @return    */   public String downloadFile() {     String path = downloadFilePath;     HttpServletResponse response = ServletActionContext.getResponse();     try {       // path是指欲下载的文件的路径。       File file = new File(path);       // 取得文件名。       String filename = file.getName();       // 以流的形式下载文件。       InputStream fis = new BufferedInputStream(new FileInputStream(path));       byte[] buffer = new byte[fis.available()];       fis.read(buffer);       fis.close();       // 清空response       response.reset();       // 设置response的Header       String filenameString = new String(filename.getBytes("gbk"),"iso-8859-1");       response.addHeader("Content-Disposition", "attachment;filename="+ filenameString);       response.addHeader("Content-Length", "" + file.length());       OutputStream toClient = new BufferedOutputStream(response.getOutputStream());       response.setContentType("application/octet-stream");       toClient.write(buffer);       toClient.flush();       toClient.close();     } catch (IOException ex) {       ex.printStackTrace();     }     return null;   }   /**    * 省略set get方法    */ }

登录后复制

5、struts配置

                              text/html                                                    application/octet-stream            inputStream            attachment;filename=${fileName}            4096                     

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

利用ajax提交form表单到数据库详解(无刷新)

基于Ajax和forms组件实现注册功能(含有代码)

ajax 实现微信网页授权登录的方法(图文教程)

以上就是AjaxFileUpload+Struts2实现多文件上传功能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2760094.html

(0)
上一篇 2025年3月8日 08:55:00
下一篇 2025年2月27日 04:33:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 基于fileUpload文件上传带进度条效果的实例

    下面我就为大家带来一篇基于fileupload文件上传带进度条效果的实例。现在就分享给大家,也给大家做个参考。 文件上传过程中,如果我们能看到进度条会更好,实现思路是服务器端用监听器实时监听进度并存入session,客户端异步请求服务器端获…

    2025年3月8日
    200
  • ajax实现加载数据功能

    这篇文章主要为大家详细介绍了ajax实现加载数据功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 加载数据的具体代码,供大家参考,具体内容如下 1.xssj.php 无标题文档显示数据$(document).ready(functio…

    2025年3月8日
    200
  • ECSHOP中实现ajax弹窗登录功能

    本文主要给大家介绍在ecshop中实现ajax弹窗登录功能,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下 在上篇文章给大家介绍了使用openSpep方法实现Ecshop登录弹窗框效果,大家点击参考下 下面介绍如何实现AJAX…

    编程技术 2025年3月8日
    200
  • Ajax表单异步上传文件实例代码

    这篇文章主要介绍了ajax表单异步上传文件实例代码(包括文件域),非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧 1.起因 做前台页面时,需要调用WebAPI的Post请求,发送一些字段和文件(相当于把表单通过ajax异步发送出去,得到…

    编程技术 2025年3月8日
    200
  • 如何用node实现爬虫功能

    这次给大家带来如何用node实现爬虫功能,用node实现爬虫功能的注意事项有哪些,下面就是实战案例,一起来看一下。 node是服务器端的语言,所以可以像python一样对网站进行爬取,下面就使用node对博客园进行爬取,得到其中所有的章节信…

    2025年3月8日
    200
  • 通过Ajax方式上传文件使用FormData进行Ajax请求

    这篇文章主要介绍了通过ajax方式上传文件使用formdata进行ajax请求的相关资料,需要的朋友可以参考下 通过传统的form表单提交的方式上传文件: Html代码  登录后复制登录后复制登录后复制 不过传统的form表单提交会导致页面…

    编程技术 2025年3月8日
    200
  • Ajax+Struts2实现验证码验证功能(图文教程)

    这篇文章主要介绍了ajax+struts2实现验证码验证功能实例代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 众所周知,验证码在我们的生活中都是非常常见的,很多公司都在各种折腾各种各样的验证码,这里简要的用一个小案例来实…

    2025年3月8日
    200
  • 地图搜租房功能实现

    这次给大家带来地图搜租房功能实现,地图搜租房功能实现的注意事项有哪些,下面就是实战案例,一起来看一下。 layout: posttitle: 半个小时教你写一个毕设之地图搜租房category: 其他date: 2018-05-23tags…

    2025年3月8日
    200
  • jquery中的ajax异步上传

    本篇文章给大家介绍jquery中的ajax异步上传,在此需要引入ajaxfileupload.js这个js文件。接下来,有需要的朋友一起学习吧 找了好久终于在网上找到了ajax异步上传文件的方法,不过网上大多数是php的 ,我改为strut…

    编程技术 2025年3月8日
    200
  • 怎样使用vue组件与复用功能

    这次给大家带来怎样使用vue组件与复用功能,使用vue组件与复用功能的注意事项有哪些,下面就是实战案例,一起来看一下。 一、什么是组件 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论