Web Uploader
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。
采用大文件分片并发上传,极大的提高了文件上传效率。
地址:http://fex.baidu.com/webuploader/
现目前百度文库这款产品的文档上传就是基于Web Uploader
接下来就是第一个demo实现文件上传,后端采用
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
组件
demo的详细讲解我就写在注释里面了,毕竟百度的api太好用了。
<!DOCTYPE html>
<html>
<head>
<title>one.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../themes/webuploader.css" type="text/css"></link>
</head>
<body>
<div id="uploader" class="wu-example">
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
<div class="btns">
<div id="picker">选择文件</div>
<button id="ctlBtn" class="btn btn-default">开始上传</button>
</div>
</div>
</body>
<script type="text/javascript" src="../plugins/jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../plugins/webuploader.js"></script>
<script type="text/javascript">
$(function() {
var uploader = WebUploader.create({
// swf文件路径
swf : "../plugins/Uploader.swf",
// 文件接收服务端。
server : '/Angular/servlet/FileUpload',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick : '#picker',
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize : false
});
var $btn = $("#ctlBtn");
$btn.on('click', function() {
uploader.upload();
});
});
</script>
</html>
后端:
package com.lx;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = -3618247291848427195L;
// 1.文件上传路径
private static final String UPLOAD_DIRECTORY = "D:/文件上传";
// 2.设置临时存储文件大小,当超过大小时,将先存储超出大小文件在临时目录
private static final int MEMORY_THRESHOLD = 1024 * 1024 * 30;
// 3.设置最大文件上传值
private static final int MAX_FILE_SIZE = 1024 * 1024 * 2000;
// 4.最大请求值
private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 2048;
public FileUpload() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.设置字符编码为utf-8
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 2.检测是否为多媒体上传
if (!ServletFileUpload.isMultipartContent(request)) {
// 2.1如果不是则停止
PrintWriter writer = response.getWriter();
writer.println("Error: 表单必须包含 enctype=multipart/form-data");
writer.flush();
return;
}
// 3.配置上传参数
DiskFileItemFactory factory = new DiskFileItemFactory();
// 4. 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
factory.setSizeThreshold(MEMORY_THRESHOLD);
// 5.设置临时存储目录 java.io.tmpdir默认的临时文件路径为服务器的temp目录
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
ServletFileUpload upload = new ServletFileUpload(factory);
// 6.设置最大文件上传值
upload.setFileSizeMax(MAX_FILE_SIZE);
// 7.设置最大请求值 (包含文件和表单数据)
upload.setSizeMax(MAX_REQUEST_SIZE);
// 8. 如果目录不存在则创建
File uploadDir = new File(UPLOAD_DIRECTORY);
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
try {
// 10.解析请求的内容提取文件数据
List<FileItem> formItems = upload.parseRequest(request);
// 10.1迭代表单数据
if (formItems != null && formItems.size() > 0) {
for (FileItem item : formItems) {
if (!item.isFormField()) {
String nFileName = new File(item.getName()).getName();
item.write(new File(UPLOAD_DIRECTORY + File.separator + File.separator + nFileName+""));
item.delete();
}
}
}
} catch (Exception ex) {
}
}
public void init() throws ServletException {
}
}
附件:代码demo
- 大小: 692.8 KB
分享到:
相关推荐
本篇文章将聚焦于“百度Web Uploader组件”如何实现文件的分片上传,这对于理解前端大文件上传的机制至关重要。 百度Web Uploader是一款强大的JavaScript文件上传组件,它支持多浏览器、拖拽上传、图片预览、进度...
1. **Web Uploader组件**:百度Web Uploader是一款轻量级、高性能的前端文件上传组件,它使用HTML5技术,同时兼容低版本浏览器,如IE6/7/8等。它通过拖拽、多选文件、断点续传等功能,极大地提升了用户体验。在本...
在Web开发中,文件上传是一项常见的功能,而百度Web Uploader是一个强大的JavaScript库,专为实现高效的多文件上传而设计。它支持预览、断点续传、多线程上传等功能,极大地提升了用户体验。本示例将详细介绍如何在...
Web-Uploader是百度开发的一款强大的前端文件上传组件,尤其引人注目的是它对低版本浏览器,包括IE6+的良好支持。这款插件旨在提供一种高效、便捷的多文件上传解决方案,使得用户在不同浏览器环境下都能享受到一致的...
Vue Uploader组件是Vue.js框架中的一个用于文件上传的功能组件,它使得在Web应用中处理文件上传变得简单而直观。Vue File Inputer和百度的WebUploader是两种常见的Vue Uploader实现,它们各自提供了不同的特性和功能...
Web Uploader是由百度开发的一款轻量级的文件上传组件,它的设计目标是提供一种简单、灵活且跨平台的文件上传解决方案。它主要利用HTML5的新特性,同时兼容老版本的浏览器,通过Flash作为备用方案,确保了在各种环境...
WebUploader是百度推出的一款强大的文件上传组件,尤其适用于处理大文件上传、断点续传以及文件分片等复杂场景。这个开源项目旨在提供一个高效、稳定且易用的上传解决方案,广泛应用于各种Web应用中。在这个demo中,...
百度WebUploader是一款强大的前端文件上传组件,它提供了丰富的API和灵活的自定义选项,使得在网页上实现复杂、高效的文件上传功能变得轻而易举。本篇文章将深入探讨WebUploader的基本使用方法,以及如何在实际项目...
百度WebUploader是一款强大的前端文件上传组件,它提供了丰富的API和灵活的自定义选项,使得在网页上实现多文件选择、预览、上传等功能变得简单易行。该组件支持多种浏览器环境,包括IE6+、Firefox、Chrome、Safari...
WebUploader是百度推出的一款强大的前端上传组件,它支持多种上传方式,包括单文件上传、多文件上传、拖拽上传、断点续传等。在这个"webuploader完整例子\百度切割上传"中,我们主要探讨的是如何实现大文件的分片...
WebUploader是百度WebFE(FEX)团队推出的一款先进的文件上传组件,主要基于HTML5技术,同时为了兼容老版本浏览器,它还利用了Flash作为辅助技术。这款工具旨在简化网页端的文件上传流程,提供了丰富的功能和良好的...
百度WebUploader是一款强大的前端文件上传组件,它提供了一套完整的解决方案,包括文件选择、文件预览、上传进度显示、多文件上传、断点续传等功能。在本文中,我们将深入探讨WebUploader的核心特性、API用法以及...
Web Uploader是一个由百度WebFE(FEX)团队开发的文件上传组件,它主要基于HTML5技术,同时也支持老版本的IE浏览器通过Flash进行文件上传。该插件具有强大的功能和良好的兼容性,适用于多种现代浏览器,包括IE6+、iOS ...
WebUploader是百度推出的一个前端文件上传组件,支持多文件选择、预览、上传进度显示等功能,兼容大部分现代浏览器。它基于HTML5的File API,对于不支持HTML5的浏览器,会自动降级到Flash。 2. **环境准备** 在...
WebUploader是百度推出的一款强大的文件上传组件,尤其适用于图片上传场景。它支持多种浏览器,包括对IE9及更高版本的良好兼容性。在实际项目中,我们可能会遇到需要在同一个页面设置多个上传按钮的需求,比如一个...
总的来说,这个项目提供了一个完整的解决方案,帮助开发者实现基于MinIO的对象存储服务,并利用WebUploader进行高效、可靠的文件上传。通过深入理解这两个技术,我们可以构建更稳定、高效的云存储应用。
在本文中,我们将深入探讨如何使用百度WebUpload控件实现文件上传功能,这是一个在Web开发中常见的需求。WebUpload是一款轻量级、高效的文件上传组件,尤其适合在处理大量文件上传时提供良好的用户体验。 首先,...
WebUploader是由 Baidu WebFE(FEX) 团队开发的一个简单的以 HTML5为主 , FLASH为辅 的现代 文件上传组件 。这篇文章主要介绍了在Vue项目中使用WebUploader实现文件上传,需要的朋友可以参考下
9. `webuploader-0.1.5`: WebUploader的版本库,包含了所有必要的组件文件。 10. `fileinit.php`: 文件初始化脚本,用于设置上传环境。 五、总结 通过以上介绍,我们可以了解到如何利用百度WebUploader实现批量...