`

百度Web Uploader组件实现文件上传(一)

阅读更多
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
0
0
分享到:
评论

相关推荐

    百度Web Uploader组件实现文件上传之分片上传(一)

    本篇文章将聚焦于“百度Web Uploader组件”如何实现文件的分片上传,这对于理解前端大文件上传的机制至关重要。 百度Web Uploader是一款强大的JavaScript文件上传组件,它支持多浏览器、拖拽上传、图片预览、进度...

    百度web uploader批量文件上传(测试程序,可用)

    1. **Web Uploader组件**:百度Web Uploader是一款轻量级、高性能的前端文件上传组件,它使用HTML5技术,同时兼容低版本浏览器,如IE6/7/8等。它通过拖拽、多选文件、断点续传等功能,极大地提升了用户体验。在本...

    百度web uploader java servlet上传示例

    在Web开发中,文件上传是一项常见的功能,而百度Web Uploader是一个强大的JavaScript库,专为实现高效的多文件上传而设计。它支持预览、断点续传、多线程上传等功能,极大地提升了用户体验。本示例将详细介绍如何在...

    web-uploader百度多文件上传插件 支持IE6+

    Web-Uploader是百度开发的一款强大的前端文件上传组件,尤其引人注目的是它对低版本浏览器,包括IE6+的良好支持。这款插件旨在提供一种高效、便捷的多文件上传解决方案,使得用户在不同浏览器环境下都能享受到一致的...

    vue uploader组件

    Vue Uploader组件是Vue.js框架中的一个用于文件上传的功能组件,它使得在Web应用中处理文件上传变得简单而直观。Vue File Inputer和百度的WebUploader是两种常见的Vue Uploader实现,它们各自提供了不同的特性和功能...

    度娘上传插件Web Uploader

    Web Uploader是由百度开发的一款轻量级的文件上传组件,它的设计目标是提供一种简单、灵活且跨平台的文件上传解决方案。它主要利用HTML5的新特性,同时兼容老版本的浏览器,通过Flash作为备用方案,确保了在各种环境...

    百度webuploader自己写的demo,涉及到大文件上传,断电续传,分片等,前后端代码齐全,有需要的可用哪来参考哈

    WebUploader是百度推出的一款强大的文件上传组件,尤其适用于处理大文件上传、断点续传以及文件分片等复杂场景。这个开源项目旨在提供一个高效、稳定且易用的上传解决方案,广泛应用于各种Web应用中。在这个demo中,...

    百度webuploader组件使用例子

    百度WebUploader是一款强大的前端文件上传组件,它提供了丰富的API和灵活的自定义选项,使得在网页上实现复杂、高效的文件上传功能变得轻而易举。本篇文章将深入探讨WebUploader的基本使用方法,以及如何在实际项目...

    百度多文件上传组件webuploader示例for java

    百度WebUploader是一款强大的前端文件上传组件,它提供了丰富的API和灵活的自定义选项,使得在网页上实现多文件选择、预览、上传等功能变得简单易行。该组件支持多种浏览器环境,包括IE6+、Firefox、Chrome、Safari...

    webuploader完整例子\百度切割上传

    WebUploader是百度推出的一款强大的前端上传组件,它支持多种上传方式,包括单文件上传、多文件上传、拖拽上传、断点续传等。在这个"webuploader完整例子\百度切割上传"中,我们主要探讨的是如何实现大文件的分片...

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件

    WebUploader是百度WebFE(FEX)团队推出的一款先进的文件上传组件,主要基于HTML5技术,同时为了兼容老版本浏览器,它还利用了Flash作为辅助技术。这款工具旨在简化网页端的文件上传流程,提供了丰富的功能和良好的...

    百度上传控件Demo(WebUploader)及API文档

    百度WebUploader是一款强大的前端文件上传组件,它提供了一套完整的解决方案,包括文件选择、文件预览、上传进度显示、多文件上传、断点续传等功能。在本文中,我们将深入探讨WebUploader的核心特性、API用法以及...

    Web Uploader文件上传插件使用详解

    Web Uploader是一个由百度WebFE(FEX)团队开发的文件上传组件,它主要基于HTML5技术,同时也支持老版本的IE浏览器通过Flash进行文件上传。该插件具有强大的功能和良好的兼容性,适用于多种现代浏览器,包括IE6+、iOS ...

    .net MVC 实现多文件上传,显示上传进度条,可传多个文件

    WebUploader是百度推出的一个前端文件上传组件,支持多文件选择、预览、上传进度显示等功能,兼容大部分现代浏览器。它基于HTML5的File API,对于不支持HTML5的浏览器,会自动降级到Flash。 2. **环境准备** 在...

    WebUploader照片上传,file文件图片上传样式美化,多上传按钮处理,支持IE9+

    WebUploader是百度推出的一款强大的文件上传组件,尤其适用于图片上传场景。它支持多种浏览器,包括对IE9及更高版本的良好兼容性。在实际项目中,我们可能会遇到需要在同一个页面设置多个上传按钮的需求,比如一个...

    基于minio webuploader实现的分片上传 断点续传

    总的来说,这个项目提供了一个完整的解决方案,帮助开发者实现基于MinIO的对象存储服务,并利用WebUploader进行高效、可靠的文件上传。通过深入理解这两个技术,我们可以构建更稳定、高效的云存储应用。

    webUploader Demo源码下载

    【webUploader】是一个强大的前端文件上传组件,由百度公司开发并开源。这个组件的主要功能是为Web应用提供灵活、高效且具有多种定制可能性的文件上传功能。它支持多文件选择、断点续传、预览、进度显示以及各种错误...

    文件上传实例

    在本文中,我们将深入探讨如何使用百度WebUpload控件实现文件上传功能,这是一个在Web开发中常见的需求。WebUpload是一款轻量级、高效的文件上传组件,尤其适合在处理大量文件上传时提供良好的用户体验。 首先,...

    Vue项目中使用WebUploader实现文件上传的方法

    WebUploader是由 Baidu WebFE(FEX) 团队开发的一个简单的以 HTML5为主 , FLASH为辅 的现代 文件上传组件 。这篇文章主要介绍了在Vue项目中使用WebUploader实现文件上传,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics