使用WebUploader和servlet实现文件上传

注意点:

1、使用注解@MultipartConfig将一个Servlet标识为支持文件上传。

2、Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作

3、WebUploader参照网上教程实现。

4、引入webuploader.css、webuploader.js、Uploader.swf

upload.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/JS/jquery-1.8.3.min.js"></script>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/JS/WebUploader/webuploader.css">
<script type="text/javascript" src="${pageContext.request.contextPath }/JS/WebUploader/webuploader.js"></script>

<script type="text/javascript">

    var state = "pending";
    var uploader;

    $().ready(function(){
        init();
    });

    function init(){
        if (!uploader) {
            uploader = WebUploader.create({
                swf : "${pageContext.request.contextPath }/JS/WebUploader/Uploader.swf",
                server : "${pageContext.request.contextPath }/servlet/UploadServlet",
                auto : false,
                pick : "#selectFile",
                resize : false
            });
        }
        uploader.on("fileQueued",function(file){
            $("#fileInfo").append(‘<div id="‘+file.id+‘">‘+file.name+‘<p class="state">等待上传</p></div>‘);
        });
        uploader.on("uploadProgress",function(file,percentage){
            var fileId = $("#"+file.id),
                percent = fileId.find(".progress .progress-bar");
            if(!percent.length){//避免重复创建
                percent = $(‘<div class="progress progress-striped active"><div class="progress-bar" role="progressbar" style="width: 0%"></div></div>‘)
                    .appendTo(fileId).find(‘.progress-bar‘);
            }
            fileId.find(‘p.state‘).text(‘上传中‘);
            percent.css( ‘width‘, percentage * 100 + ‘%‘ );
        });
        uploader.on( ‘uploadSuccess‘, function( file ) {
            $( ‘#‘+file.id ).find(‘p.state‘).text(‘已上传‘);
        });

        uploader.on( ‘uploadError‘, function( file ) {
            $( ‘#‘+file.id ).find(‘p.state‘).text(‘上传出错‘);
        });

        uploader.on( ‘uploadComplete‘, function( file ) {
            $( ‘#‘+file.id ).find(‘.progress‘).fadeOut();
        });
        uploader.on( ‘all‘, function( type ) {
            if ( type === ‘startUpload‘ ) {
                state = ‘uploading‘;
            } else if ( type === ‘stopUpload‘ ) {
                state = ‘paused‘;
            } else if ( type === ‘uploadFinished‘ ) {
                state = ‘done‘;
            }
            if ( state === ‘uploading‘ ) {
                $("#startUpload").text(‘暂停上传‘);
            } else {
                $("#startUpload").text(‘开始上传‘);
            }
        });
          //开始上传
        $("#startUpload").on( ‘click‘, function() {
            if ( state === ‘uploading‘ ) {
                uploader.stop();
            } else {
                uploader.upload();
            }
        });
        //上传出错时触发
        uploader.on( "uploadError", function( obj, reason  ) {
              var errorMessage = response.message;
                  alert(reason,3);
          });
    }
</script>
</head>
<body>
    <div id="uploader">
        <div id="fileInfo"></div>
        <div class="btns">
            <div id="selectFile">选择文件</div>
            <button id="startUpload">开始上传</button>
        </div>
    </div>
</body>
</html>

uploadConfig.properties

配置文件上传的根路径、文件大小限制、后缀限制:

fileSystemPath=F:/UploadFile

#maxSize=123456789

#fileSuffix=jpg,doc,docx,xls

UploadServlet.java:

使用@WebServlet注解来访问servlet

package com.test.servlet;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Properties;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/servlet/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public UploadServlet() {
        super();
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        super.destroy();
    }

    @Override
    public void init() throws ServletException {
        // TODO Auto-generated method stub
        super.init();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        InputStream proIn = getClass().getClassLoader().getResourceAsStream("uploadConfig.properties");
        Properties properties = new Properties();
        properties.load(proIn);

        String fileSystemPath = properties.getProperty("fileSystemPath");//系统根路径

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String ymd = sdf.format(new Date());

        String filePath = "upload" + "/" + ymd;
        String savePath = fileSystemPath + "/" + filePath;

        //创建文件夹
        File saveDir = new File(savePath);
        if(!saveDir.exists()){
            saveDir.mkdirs();
        }
        Collection<Part> parts = request.getParts();
        for(Part part : parts){
            String contentDisposition = part.getHeader("content-disposition");
            String fileName = getFileName(contentDisposition);
            if(fileName.equals("")){
                continue;
            }else{
                String pureFileName = fileName.substring(0, fileName.lastIndexOf("."));
                String suffix = fileName.substring(fileName.lastIndexOf(".")+1);
                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddhhmmss");
                String saveFileName = pureFileName + "-" + sdf1.format(new Date()) + "-" + new Random().nextInt(1000) + "." + suffix;
                part.write(savePath + "/" + saveFileName);
            }
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    public String getFileName(String contentDisposition){
        String[] strArr1 = contentDisposition.split(";");
        if(strArr1.length < 3){
            return "";
        }else{
            String[] strArr2 = strArr1[2].split("=");
            String fileName = strArr2[1];
            fileName = fileName.replaceAll("\"", "");//把双引号去除掉
            return fileName;
         }

    }
}
时间: 2024-11-08 07:45:53

使用WebUploader和servlet实现文件上传的相关文章

Servlet多文件上传

各位大侠可能会对263电子邮箱中的"上传附件"功能有印象,就是:在浏览 器中点击"浏览",弹出一个对话框,选中文件后,单击"确定",文件就被上传到了服务器端. 因为需要,就到网上找了几个控件,如SmartUpload等,但都觉得不好用,或者 说是不合用,决定自己做一个.近日看到网上也有人提问怎么上载文件,于是把编制过程整理一遍,希望对大家有所帮助,不足之处,请多多指教. 准备 侦听工具,如SpyNet(包括CaptureNetPeepNet),目

Servlet实现文件上传,可多文件上传

一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons-io-2.3-bin.zip                       :    点击打开链接 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 applicatio

JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等

原文:JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等 源代码下载地址:http://www.zuidaima.com/share/1550463319542784.htm JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等

Servlet实现文件上传

一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons-io-2.3-bin.zip                       :    点击打开链接 二.文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded

用openoffice+jodconverter+webuploader+pdf.js实现文件上传、在线预览功能

一.背景 最近公司一个项目要实现一个文件上传以及多文档在线预览的功能,之前一直做无线工具开发的,没有涉及到这些东西.另外项目组缺java开发人员,而且自己也只是一个半吊子前端加小半吊子java开发人员,所以让我一个人先弄个Demo出来瞧瞧.在网上搜索了不少资料,在这里只是整理一下,留作以后查阅. 二.插件以及工具包 1.pdfjs-v1.7.225  前端pdf格式文件的显示组件 2.webuploader-0.1.5  百度的文件上传组件 3.video-js-6.2.5 html5视频播放组

jsp+servlet实现文件上传

上传(上传不能使用BaseServlet) 1. 上传对表单限制 * method="post" * enctype="multipart/form-data" * 表单中需要添加文件表单项:<input type="file" name="xxx" /> <form action="xxx" method="post" enctype="multipart/

Servlet的文件上传

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/file-uploading.html: Servlet可以与HTML form标签一起使用允许用户将文件上传到服务器.上传的文件可以是文本文件或图像文件或任何文档. 一.创建一个文件上传表单 下述HTML代码创建了一个文件上传表单.以下是需要注意的几点: 表单method属性应该设置为POST方法且不能使用GET方法. 表单enctype属性应该设置为multipart/form-data.

jsp使用servlet实现文件上传

1.在index.jsp中写入以下代码 <form method="post" action="demo3" enctype="multipart/form-data"> 选择一个文件: <input type="file" name="uploadFile"/> <br/><br/> <input type="submit" val

servlet实现文件上传,预览,下载和删除

CreateTime--2017年9月4日09:24:59 Author:Marydon 一.准备工作: 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数据转成JSON对象需要jar包:commons-beanutils-1.8.3.jar.commons-collections-3.2.1.jar.commons-lang-2.6.jar.commons-log