文档章节

Java调用uploadify实现文件上传Demo实现

江哥一直在
 江哥一直在
发布于 2013/11/01 17:08
字数 715
阅读 30759
收藏 16

导读:uploadify是来自国外的一款优秀的基于jQuery的文件上传插件,主要功能是批量上传文件,此插件在项目中已被广泛之用,于是决定花点时间搞了一个基于Java语言的demo,特此公布出来。

一、采用版本及页面基本引入介绍

本demo采用的是uploadify的2.1.0版本,下载地址:http://download.csdn.net/detail/zengzhuangjun/4340007

我们需要在html页面的<head></head>标签中加入如下代码:
  <link href="/res/plugin/uploadify/uploadify.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript" src="/res/plugin/uploadify/jquery-1.3.2.min.js"></script>
  <script type="text/javascript" src="/res/plugin/uploadify/swfobject.js"></script>
  <script type="text/javascript" src="/res/plugin/uploadify/jquery.uploadify.v2.1.0.js"></script>

二、uploadify页面初始化

1、在页面需要展示的上传的地方加入如下代码:
  <table>
        <tr>
            <td><label><img src="/images/save.gif"/> 上传课件:</label></td>
            <td><label><input type="file" name="uploadify" id="uploadify"/></label>&nbsp;&nbsp;</td>
            <td><div id="fileQueue"></div></td>
        </tr>
   </table>
注意:代码中的<input type="file" name="uploadify" id="uploadify"/> 和<div id="fileQueue"></div>不可缺少,主要是用来显示浏览文件的flash'文件盒上传进度的显示。

2、初始化上传组件:
$(document).ready(function(){
       $("#uploadify").uploadify({
            'uploader': '/res/plugin/uploadify/uploadify.swf',
            'script':"/fileserver/upload",
            'cancelImg': '/res/plugin/uploadify/cancel.png',
            'queueID': 'fileQueue',
            'auto': true,
            'buttonText': 'select',
            'simUploadLimit' : 1,
            'queueSizeLimit' : 1,
            'fileExt': '*.jpg;*.gif;*.jpeg;*.png;*.bmp;*.zip;*.rar;*.7z',
            onComplete: function(event, queueID, fileObj, response, data) {
                //转换为json对象
                var dataObj = eval("("+response+")");
                saveFile(dataObj);
            },
            onSelect:function(){
            },
            onError: function(event, queueID, fileObj) {
                alert("文件:" + fileObj.name + "上传失败");
            }
        });
});

三、uploadify上传处理的Java代码

1、上传servlet代码:

这里我们使用Servlet来实现文件的上传处理,参考代码:
import com.poweree.util.DateUtils;
import net.sf.json.JSONObject;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: http://www.mbaike.net
 * Date: 13-10-31
 * Time: 下午4:31
 * To change this template use File | Settings | File Templates.                                   a
 */
public class FileServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map map = new HashMap();
        request.setCharacterEncoding("utf-8");
        DiskFileItemFactory factory = new DiskFileItemFactory();
        String path = request.getRealPath("/file");
        factory.setRepository(new File(path));
        factory.setSizeThreshold(1024*1024) ;
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            //可以上传多个文件
            List<FileItem> list = (List<FileItem>)upload.parseRequest(request);
            for(FileItem item : list){
                if(!item.isFormField()){
                    String name = item.getName() ;
                    String fileSuffix  = name.substring(name.lastIndexOf(".")+1,name.length());
                    String oldName = name.replaceAll("." + fileSuffix,"");
                    String fileName = DateUtils.getNowTime(DateUtils.DATE_All_KEY_STR);
                    String newName = fileName + "." + fileSuffix;
                    OutputStream out = new FileOutputStream(new File(path,newName));
                    InputStream in = item.getInputStream() ;
                    int length = 0 ;
                    byte [] buf = new byte[1024] ;
                    while( (length = in.read(buf) ) != -1){
                        out.write(buf, 0, length);
                    }
                    in.close();
                    out.close();
                    /**将上传处理后的数据返回**/
                    map.put("fileSuffix",fileSuffix);
                    map.put("fileName",oldName);
                    map.put("filePath",fileName);
                    break;
                }
            }
        }catch (Exception e) {
            System.out.println("出错了:" + e.getMessage());
        }
        response.setContentType("text/xml; charset=UTF-8");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
        PrintWriter out = response.getWriter();
        JSONObject jsonObject = JSONObject.fromObject(map);
        String msg =  jsonObject.toString();
        out.print(msg);
        out.close();
    }

    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req, resp);
    }
}

代码中的String fileName = DateUtils.getNowTime(DateUtils.DATE_All_KEY_STR); 主要是为了生成文件的唯一名称(日期标记)

2、在web.xml配置servlet:

    <servlet>
        <description>FileServlet</description>
        <display-name>FileServlet</display-name>
        <servlet-name>FileServlet</servlet-name>
        <servlet-class>com.test.fileserver.utils.FileServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/fileserver/upload</url-pattern>
    </servlet-mapping>

四、截图:

 




 

uploadify的下载和详细介绍,详见:http://www.mbaike.net/techs/1938.html

© 著作权归作者所有

江哥一直在

江哥一直在

粉丝 32
博文 24
码字总数 2316
作品 3
成都
后端工程师
私信 提问
加载中

评论(5)

alan-
alan-

引用来自“思维80”的评论

String fileName = DateUtils.getNowTime(DateUtils.DATE_All_KEY_STR); 里面的DATE_All_KEY_STR报错,请问你import com.poweree.util.DateUtils; 引入的是啥jar包呢?
他有写注释,他自己写的 代码中的String fileName = DateUtils.getNowTime(DateUtils.DATE_All_KEY_STR); 主要是为了生成文件的唯一名称(日期标记)
思维80
思维80
String fileName = DateUtils.getNowTime(DateUtils.DATE_All_KEY_STR); 里面的DATE_All_KEY_STR报错,请问你import com.poweree.util.DateUtils; 引入的是啥jar包呢?
freeze892
freeze892
com.poweree.util.DateUtils是哪个包啊?3
江哥一直在
江哥一直在 博主

引用来自“邓攀”的评论

苍老师亮了

13
哈哈__哈哈
哈哈__哈哈
苍老师亮了
uploadify 实现文件上传

uploadify官网我们需要到官网上下载需要的插件引入到项目中,同时我们最好看看uploadify的中文文档,当然直接把下面的代码复制作为一个工具类也行,反正都是大同小异. 如何实现图片上传功能? 在...

coderzs
2017/10/07
0
0
关于uploadify图片上传把图片名称保存到数据库

我用了uploadify上传多张图片成功后如何获取图片名称,然后把多张图片按";"进行分割,保存到数据库的一个字段中的啊,我这个是实现先上传图片然后提交发表问题的时候一起把图片名称保存到数据...

无锡酱排骨
2013/05/22
1K
0
JEECG 上传插件升级——标签

前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG团队本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload,此插件上传支持多...

Jeecg
2018/09/07
315
0
jquery uploadify插件教程

插件:Jquery Uploadify文件上传插件 http://www.uploadify.com/ 后端处理语言:java 使用前引入uploadify js和样式 <link rel="stylesheet" href="../css/uploadify.css" /> <script src=".......

青V芒
2014/01/17
3.4K
0
如何启用Java程序的脚本调试功能

显示如下: Java小程序(LiveConnect)的脚本被禁用或不支持。 您的浏览器必须支持Java脚本中的Java方法调用来实现多个文件上传, 多个文件下载 和 标注阅览器功能。 不支持上述的浏览器包括:...

放肆的青春-_-
2012/06/18
492
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部