热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Easyui结合Pluplaod插件的上传

Easyui结合Pluplaod插件的上传。被某人说了多次,要共享。这次总结了一下,共享出来。一共涉及到一个Servlet两个jspplupload官网http:www.plupload.com

Easyui 结合Pluplaod插件的上传。被某人说了多次,要共享。这次总结了一下,共享出来。一共涉及到一个Servlet两个jsp

plupload官网

http://www.plupload.com/

java源码:plupload.zip


UploaderServlet.java

package gson.demo;

/**
 * @author ____′↘夏悸
 * Easyui 中文社区
 * Easyui 学习班
 */
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletConfig;
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;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;

public class UploaderServlet extends HttpServlet {

    private static final long serialVersiOnUID= 1L;
    String repositoryPath;
    String uploadPath;

    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        Integer schunk = null;//分割块数
        Integer schunks = null;//总分割数
        String name = null;//文件名
        BufferedOutputStream outputStream=null;
        if (ServletFileUpload.isMultipartContent(request)) {
            try {
                DiskFileItemFactory factory = new DiskFileItemFactory();
                factory.setSizeThreshold(1024);
                factory.setRepository(new File(repositoryPath));//设置临时目录
                ServletFileUpload upload = new ServletFileUpload(factory);
                upload.setHeaderEncoding("UTF-8");
                upload.setSizeMax(5 * 1024 * 1024);//设置附近大小
                List items = upload.parseRequest(request);
                //生成新文件名
                String newFileName = null;
                for (FileItem item : items) {
                    if (!item.isFormField()) {// 如果是文件类型
                        name = item.getName();// 获得文件名
                        newFileName = UUID.randomUUID().toString().replace("-","").concat(".").concat(FilenameUtils.getExtension(name));
                        if (name != null) {
                            String nFname = newFileName;
                            if (schunk != null) {
                                nFname = schunk + "_" + name;
                            }
                            File savedFile = new File(uploadPath, nFname);
                            item.write(savedFile);
                        }
                    } else {
                        //判断是否带分割信息
                        if (item.getFieldName().equals("chunk")) {
                            schunk = Integer.parseInt(item.getString());
                        }
                        if (item.getFieldName().equals("chunks")) {
                            schunks = Integer.parseInt(item.getString());
                        }
                    }
                }
                
                if (schunk != null && schunk + 1 == schunks) {
                    outputStream = new BufferedOutputStream(new FileOutputStream(new File(uploadPath, newFileName)));
                    //遍历文件合并
                    for (int i = 0; i                         File tempFile=new File(uploadPath,i+"_"+name);
                        byte[] bytes=FileUtils.readFileToByteArray(tempFile);  
                        outputStream.write(bytes);
                        outputStream.flush();
                        tempFile.delete();
                    }
                    outputStream.flush();
                }
                response.getWriter().write("{\"status\":true,\"newName\":\""+newFileName+"\"}");
            } catch (FileUploadException e) {
                e.printStackTrace();
                response.getWriter().write("{\"status\":false}");
            } catch (Exception e) {
                e.printStackTrace();
                response.getWriter().write("{\"status\":false}");
            }finally{  
                try {  
                    if(outputStream!=null)
                        outputStream.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }   
        }
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        repositoryPath = FileUtils.getTempDirectoryPath();
        uploadPath = config.getServletContext().getRealPath(config.getInitParameter("uploadPath"));
        File up = new File(uploadPath);
        if(!up.exists()){
            up.mkdir();
        }
    }
}


web.xml

01 <servlet>
02     <servlet-name>Uploaderservlet-name>
03     <servlet-class>gson.demo.UploaderServletservlet-class>
04     <init-param>
05         <param-name>uploadPathparam-name>
06         <param-value>/WEB-INF/uploadparam-value>
07     init-param>
08   servlet>
09  
10   <servlet-mapping>
11     <servlet-name>Uploaderservlet-name>
12     <url-pattern>/uploaderurl-pattern>
13   servlet-mapping>

 

index.jsp

01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 <%
03     String path = request.getContextPath();
04     String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";
05 %>
06  
07
08 <html>
09 <head>
10 <basehref="<%=basePath%>">
11 <title>GodSon Easyui 结合Pluplaod插件的上传演示title>
12 <linkrel="stylesheet"href="bootstrap/easyui.css"type="text/css">link>
13 <scripttype="text/Javascript"src="jquery-1.8.0.min.js">script>
14 <scripttype="text/Javascript"src="easyui/jquery.easyui.min.js">script>
15 <scripttype="text/Javascript">
16 /**
17  * 创建上传窗口 公共方法
18  * @param chunk 是否分割大文件
19  * @param callBack 上传成功之后的回调
20  */
21 function Uploader(chunk,callBack){
22     var addWin = $('<divstyle="overflow: hidden;"/>');
23     var upladoer = $('<iframe/>');
24     upladoer.attr({'src':'<%=basePath%>/uploader.jsp?chunk='+chunk,width:'100%',height:'100%',frameborder:'0',scrolling:'no'});
25     addWin.window({
26         title:"上传文件",
27         height:350,
28         width:550,
29         minimizable:false,
30         modal:true,
31         collapsible:false,
32         maximizable:false,
33         resizable:false,
34         content:upladoer,
35         onClose:function(){
36             var fw = GetFrameWindow(upladoer[0]);
37             var files = fw.files;
38             $(this).window('destroy');
39             callBack.call(this,files);
40         },
41         onOpen:function(){
42             var target = $(this);
43             setTimeout(function(){
44                 var fw = GetFrameWindow(upladoer[0]);
45                 fw.target = target;
46             },100);
47         }
48     });
49 }
50  
51 /**
52  * 根据iframe对象获取iframe的window对象
53  * @param frame
54  * @returns {Boolean}
55  */
56 function GetFrameWindow(frame){
57     return frame && typeof(frame)=='object' && frame.tagName == 'IFRAME' && frame.contentWindow;
58 }
59   
60 function makerUpload(chunk){
61  Uploader(chunk,function(files){
62      if(files && files.length>0){
63          $("#res").text("成功上传:"+files.join(","));
64      }
65  });
66 }
67 script>
68 head>
69 <bodystyle="width: 100%;height: 100%;overflow:hidden;margin: 0;padding: 0;">
70     <h1>GodSon Easyui 结合Pluplaod插件的上传演示h1>
71     <hr/>
72     <aclass="easyui-linkbutton"href="Javascript:makerUpload(false)">不分割文件上传a> <aclass="easyui-linkbutton"href="Javascript:makerUpload(true)">分割文件上传a>
73     <hr/>
74     <divid="res">div>
75 body>
76 html>

 

upload.jsp
01 <%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
02 "-//W3C//DTD HTML 4.01 Transitional//EN">
03
04   
05     
06     "stylesheet"href="plupload/queue/css/jquery.plupload.queue.css"type="text/css">
07     
08     
09     
10     
11     
12     
13     
14   "padding: 0;margin: 0;">
15     
"uploader"
16
50   
51

 




推荐阅读
author-avatar
浪费小创_512
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有