2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > [整理]WebUploader + SpringMVC 实现多文件断点续传之一 多文件上传

[整理]WebUploader + SpringMVC 实现多文件断点续传之一 多文件上传

时间:2024-06-01 05:35:57

相关推荐

[整理]WebUploader + SpringMVC 实现多文件断点续传之一 多文件上传

PM要做一个文件上传的Web需要支持大文件断点续传,调查了一下决定使用Baidu的WebUploader控件实现。

1、多图片上传

前端JSP

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML>

<html style="height: 99%; width: 99.9%">

<head>

<title>文件上传</title>

<link rel="stylesheet" href="${ctx}/js/webuploader-0.1.5/webuploader.css" />

<script src="${ctx}/js/jquery-ui-1.11.1/jquery-ui.min.js"></script>

<script src="${ctx}/js/webuploader-0.1.5/webuploader.js"></script>

</head>

<body class="div-form-container">

<table class="upload">

<tbody>

<tr>

<td height="200px">

<div id="uploader-container" style="width: 100%">

<div id="fileList" class="uploader-list">

</div>

<div id="upInfo"></div>

<div id="filePicker">选择文件</div>

</div>

</td>

</tr>

<tr>

<td>

<input type="button" class="btnSave" id="btnUpload" value="上传"/>

<input type="button" class="btnSave" id="btnReset" value="重置"/>

<input type="button" class="btnSave" value="取消" οnclick="javascript:closeDialog();"/>

</td>

</tr>

</tbody>

</table>

<script type="text/javascript">

$(function() {

var $maxSingleSize = 10*1024*1024, // 单个文件最大10M

$maxSize = 10081024*1024; // 所有文件最大100M

var $list = $('#fileList'),

uploader; // Web Uploader实例

// 初始化Web Uploader

uploader = WebUploader.create({

auto : false, // 手动上传

swf : '${ctx}/js/webuploader-0.1.5/Uploader.swf',

server : '${ctx}/fileUpload/upload', // 文件接收服务端

threads : 3, // 同时运行3个线程传输

duplicate : false, // 是否重复上传(单次选择同样的文件)

fileNumLimit : 10, // 文件总数量

fileSingleSizeLimit : $maxSingleSize, // 单个文件大小限制 10M

fileSizeLimit : $maxSize, // 文件总大小限制 100M

pick : {

id : '#filePicker', // 选择文件的按钮

multiple : true // 允许可以同时选择多个文件

},

compress : false, // 不压缩文件

accept : {

extensions: "txt,gif,jpg,jpeg,bmp,png,zip,rar,war,pdf,cebx,doc,docx,ppt,pptx,xls,xlsx",

mimeTypes: '.txt,.gif,.jpg,.jpeg,.bmp,.png,.zip,.rar,.war,.pdf,.cebx,.doc,.docx,.ppt,.pptx,.xls,.xlsx',

}

});

// 当有文件添加进来的时候

uploader.on('fileQueued', function(file) {

var $li = $('<div id="' + file.id + '" class="file-item">'

+ '<span class="info">' + file.name + '</span>'

+ '<span class="state">等待上传</span>'

+ '</div>');

$list.append($li);

});

// 上传中

uploader.on('uploadProgress', function (file, percentage) {

var $li = $('#' + file.id);

var $state = $li.find('span.state');

$state.html("<font color='#330033'>上传中...</font>");

});

// 文件上传成功

uploader.on('uploadSuccess', function(file, response) {

var $li = $('#' + file.id);

var $state = $li.find('span.state');

$state.html("<font color='green'>上传成功!</font>");

});

// 文件上传失败

uploader.on('uploadError', function(file, code) {

var $li = $('#' + file.id);

var $state = $li.find('span.state');

$state.html("<font color='red'>上传失败!</font>");

});

// 手动上传

$("#btnUpload").click(function() {

// 执行上传操作

uploader.upload();

});

// 重置

$("#btnReset").click(function() {

// 清空文件列表,重置上传控件

$list.html('');

uploader.reset();

});

});

</script>

</body>

</html>

后端Controller

import java.io.File;

import java.io.IOException;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

@Controller

@RequestMapping(value = "/fileUpload")

public class FileUploadController extends BaseController {

/** 日志记录 */

private static Logger logger = Logger.getLogger(FileUploadController.class);

/**

* 保存上传文件

*

* @Title: upload

* @Description: 保存前端使用Webuploader未进行分片处理上传的文件

* @param request HttpServletRequest

* @param response HttpServletResponse

* @param session HttpSession

*/

@RequestMapping(value = "/upload")

public void upload(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

// 获得文件保存目录

String savePath = ""; // 这里是你要保存文件的目录

// 转换请求对象得到文件对象

MultipartHttpServletRequest Murequest = (MultipartHttpServletRequest) request;

Map<String, MultipartFile> files = Murequest.getFileMap();

String fileName;

File tagetFile;

// 获得文档保存目录

File dir = new File(savePath);

if (!dir.exists()) {

dir.mkdirs();

}

// 保存文档

for (MultipartFile file : files.values()) {

fileName = file.getOriginalFilename();

// 创建文件对象

tagetFile = new File(savePath + File.separator + fileName);

// 目标文件创建

if (!tagetFile.exists()) {

try {

tagetFile.createNewFile();

} catch (IOException e) {

logger.error("创建目标文件时出错:" + e.getMessage());

e.printStackTrace();

}

}

// 保存文件

try {

file.transferTo(tagetFile);

} catch (IllegalStateException e) {

logger.error("复制时出错:" + e.getMessage());

e.printStackTrace();

} catch (IOException e) {

logger.error("复制时出错:" + e.getMessage());

e.printStackTrace();

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。