package com.servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.SizeLimitExceededException;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
public class UploadServlet extends HttpServlet {
@SuppressWarnings("rawtypes")
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
try{
final long MAX_SIZE = 3* 1024 * 1024;// 设置上传文件最大为 3M
// 允许上传的文件格式的列表
final String[] allowedExt = new String[] {"jpg","jpeg","gif"};
response.setContentType("text/html");
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
dfif.setRepository(new File(request.getRealPath("/")+ "upload"));// 设置存放临时文件的目录,web根目录下的upload目录
System.out.println("临时目录:"+new File(request.getRealPath("/")+ "upload"));
// 用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 设置最大上传尺寸
sfu.setSizeMax(MAX_SIZE);
// 从request得到 所有 上传域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 处理文件尺寸过大异常
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节!");
return;
}
e.printStackTrace();
}
// 没有文件上传
if (fileList == null || fileList.size() == 0) {
out.println("请选择上传文件!");
return;
}
// 得到所有上传的文件
Iterator fileItr = fileList.iterator();
// 循环处理所有文件
while (fileItr.hasNext()) {
FileItem fileItem = null;
String path = null;
long size = 0;
// 得到当前文件
fileItem = (FileItem) fileItr.next();
// 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
if (fileItem == null || fileItem.isFormField()) {
continue;
}
// 得到文件的完整路径
path = fileItem.getName();
// 得到文件的大小
size = fileItem.getSize();
if ("".equals(path) || size == 0) {
out.println("请选择上传文件!");
return;
}
// 得到去除路径的文件名
String t_name = path.substring(path.lastIndexOf("//") + 1);//kaola.jpeg
System.out.println("t_name:"+t_name);
// 得到文件的扩展名(无扩展名时将得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);//jpeg
System.out.println(t_ext);
// 拒绝接受规定文件格式之外的文件类型
String tmp=Arrays.toString(allowedExt);
Pattern p = Pattern.compile(t_ext);
Matcher m = p.matcher(tmp);
if (m.find()==true) {
//如果符合上传的格式
String now=new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
System.out.println(now);
// 根据系统时间生成上传后保存的文件名
String prefix = now;
// 保存的最终文件完整路径,保存在web根目录下的upload目录下
String u_name = request.getRealPath("/") + "upload/"
+ prefix + "." + t_ext;
System.out.println("最终保存目录:"+u_name);
try {
File file = new File(u_name);
// 保存文件
fileItem.write(file);
out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext
+ " 文件大小: " + size + "字节<p />");
} catch (Exception e) {
e.printStackTrace();
}
}else {
System.out.println("不符合规定");
out.print("上传文件不符合规定!");
}
}
}catch(Exception e){
out.print("系统异常,请稍后再试!");
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
webuploader多图片上传+手机.rar
共23个文件
class:3个
java:3个
xml:2个
3星 · 超过75%的资源 需积分: 35 35 下载量 160 浏览量
2016-09-08
19:41:22
上传
评论
收藏 332KB RAR 举报
温馨提示
webuploader多图片上传+手机.javaweb项目,多图片上传实例,兼容手机端。
资源推荐
资源详情
资源评论
收起资源包目录
webuploader多图片上传+手机.rar (23个子文件)
webuploader
.project 1KB
WebContent
WEB-INF
lib
commons-fileupload-1.3.jar 67KB
commons-io-2.4.jar 181KB
web.xml 1KB
upload
webuploader
webuploader.css 515B
webuploader.min.js 70KB
fileupload.jsp 4KB
index.jsp 4KB
js
jquery-1.8.3.js 261KB
META-INF
MANIFEST.MF 39B
src
com
filter
CharacterEncodingfilter.java 2KB
servlet
UploadServlet.java 5KB
Test.java 544B
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.jdt.core.prefs 364B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.component 485B
.jsdtscope 503B
build
classes
com
filter
CharacterEncodingfilter.class 2KB
servlet
UploadServlet.class 5KB
Test.class 1KB
.classpath 841B
共 23 条
- 1
资源评论
- lostcpa2017-02-17运行报错,再看看
谁动了我的代码
- 粉丝: 13
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功