package com.maxwell.controller;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;
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.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.json.JSONObject;
/**
* @ClassName: UploadHandleServlet
* @Description: TODO(这里用一句话描述这个类的作用)
* @author: ms
* @date: 2015-1-3 下午11:35:50
*
*/
public class UploadHandleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//System.out.println("applicationFormId--------------->"+applicationFormId);
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
//上传时生成的临时文件保存目录
String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");
File tmpFile = new File(tempPath);
if (!tmpFile.exists()) {
//创建临时目录
tmpFile.mkdir();
}
//消息提示
String message = "";
String saveFilename= "";
//String saveFileUrl= "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
//设置上传时生成的临时文件的保存目录
factory.setRepository(tmpFile);
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//监听文件上传进度
//upload.setProgressListener(new ProgressListener(){
//public void update(long pBytesRead, long pContentLength, int arg2) {
//System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead);
/**
* 文件大小为:14608,当前已处理:4096
文件大小为:14608,当前已处理:7367
文件大小为:14608,当前已处理:11419
文件大小为:14608,当前已处理:14608
*/
//}
//});
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
// 就是判断enctype属性是否为multipart/form-data
// boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
//设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
//upload.setFileSizeMax(1024*1024);
//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
//upload.setSizeMax(1024*1024*10);
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
//如果fileitem中封装的是普通输入项的数据
if(item.isFormField()){
String name = item.getFieldName();
//解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name + "=" + value);
}else{//如果fileitem中封装的是上传文件
//得到上传的文件名称,
String filename = item.getName();
//System.out.println(filename);
if(filename==null || filename.trim().equals("")){
continue;
}
//注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
//处理获取到的上传文件的文件名的路径部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("\\")+1);
//得到上传文件的扩展名
//String fileExtName = filename.substring(filename.lastIndexOf(".")+1);
//if ("xls".equals(fileExtName.toLowerCase())) {
//String fileExtName = filename.substring(filename.lastIndexOf(".")+1);
//如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
//System.out.println("上传的文件的扩展名是:"+fileExtName);
//获取item中的上传文件的输入流
InputStream in = item.getInputStream();
//得到文件保存的名称
saveFilename = makeFileName(filename);
//saveFileUrl="../../FileUpload/upload/" + saveFilename;
//得到文件的保存目录
//String realSavePath = makePath(saveFilename, savePath);
//创建一个文件输出流
FileOutputStream out = new FileOutputStream(savePath + "\\" + saveFilename);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while((len=in.read(buffer))>0){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
out.write(buffer, 0, len);
}
//关闭输入流
in.close();
//关闭输出流
out.close();
//删除处理文件上传时生成的临时文件
//item.delete();
message += "文件上传成功!<br>";
//System.out.println(message);
// message += FromExcel.readExcel(savePath, saveFilename,applicationFormId,applicantId,applicantName,unicode,applyCategory);
没有合适的资源?快使用搜索试试~ 我知道了~
HTML5视频上传(包含html5自带拍照,录像,音频,附件)
共77个文件
js:24个
less:24个
jar:6个
1星 需积分: 44 206 下载量 53 浏览量
2018-08-30
12:30:25
上传
评论 4
收藏 2.39MB ZIP 举报
温馨提示
html5视频前端视频上传,手机拍照上传,手机录像上传。HLMT5中input实现多种文件上传,视频上传,图片上传,调用手机摄像头,照相机,相册等功能。
资源推荐
资源详情
资源评论
收起资源包目录
FileUploadDome.zip (77个子文件)
FileUploadDome
下载运行(必读) 252B
src
com
maxwell
controller
ListFileServlet.java 3KB
DownLoadServlet.java 4KB
UploadHandleServlet.java 17KB
.classpath 710B
.mymetadata 336B
.myeclipse
.project 2KB
WebRoot
META-INF
MANIFEST.MF 36B
less
ydui.less 530B
extend
iconfont.less 10KB
variables.less 3KB
reset.less 2KB
public.less 1KB
mixins.less 3KB
page
icons.less 3KB
progressbar.less 217B
grids.less 1KB
tab.less 1KB
spinner.less 727B
dialog.less 10KB
tabbar.less 1KB
slider.less 795B
button.less 1KB
list.less 8KB
scrolltab.less 1KB
cityselect.less 2KB
actionsheet.less 880B
cell.less 4KB
badge.less 1KB
navbar.less 1KB
keyboard.less 3KB
demo.less 5KB
js
upload.js 277B
jquery.js 90KB
jquery.min.js 91KB
xc.js 2KB
ydui.js 118KB
ydui.flexible.js 1KB
source
ydui.progressbar.js 7KB
ydui.sendcode.js 2KB
ydui.slider.js 10KB
ydui.keyboard.js 7KB
ydui.scrolltab.js 4KB
ydui.active.js 215B
ydui.device.js 2KB
ydui.dialog.js 8KB
ydui.util.js 6KB
ydui.tab.js 3KB
ydui.lazyload.js 2KB
ydui.infinitescroll.js 8KB
ydui.cityselect.js 9KB
ydui.fastclick.js 30KB
ydui.js 4KB
ydui.pullrefresh.js 6KB
ydui.actionsheet.js 2KB
ydui.spinner.js 7KB
index.jsp 834B
upload.jsp 6KB
css
demo.css 5KB
waves.min.css 4KB
upload.css 7KB
waves.css 5KB
ydui.css 72KB
message.jsp 269B
listfile.jsp 574B
img
no_image.jpg 743B
WEB-INF
classes
com
maxwell
controller
ListFileServlet.class 2KB
DownLoadServlet.class 3KB
UploadHandleServlet.class 6KB
temp
lib
commons-io-2.4.jar 181KB
taglibs-standard-impl-1.2.5.jar 202KB
jxl.jar 708KB
commons-fileupload-1.3.jar 67KB
sqljdbc41.jar 880KB
jstl-1.2.jar 405KB
upload
template
xzmb.xls 7KB
web.xml 1KB
共 77 条
- 1
资源评论
- 预见才能遇见2020-03-08根本不是javascript的,没有什么用
- feifan7312020-08-04学习了,学习了
伊羽@筱筱
- 粉丝: 2
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MMDF1N05ER2G-VB一款SOP8封装2个N-Channel场效应MOS管
- zipkin-server-3.3.0-exec.jar
- MI9933-VB一款SOP8封装2个P-Channel场效应MOS管
- zipkin-server-2.24.4-exec.jar
- MI4953-VB一款SOP8封装2个P-Channel场效应MOS管
- 基于Akka模拟实现Spark Standalone.pdf
- MI4946-VB一款SOP8封装2个N-Channel场效应MOS管
- 毕业答辩模板(动态模板)苹果IOS星空通用论文答辩模板
- 有效cookie值获取方式汇总
- 基于python实现的英雄联盟知识图谱问答系统源码(期末大作业).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功