package fileupload;
import javax.servlet.http.HttpServlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
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.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadServlet extends HttpServlet {
public FileUploadServlet() {
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 {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("FileUploadServlet 39");
try{
final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M
// 允许上传的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt",
"doc", "docx", "mp3", "wma", "m4a" };
response.setContentType("text/html");
// 设置字符编码为UTF-8, 这样支持汉字显示
response.setCharacterEncoding("UTF-8");
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
dfif.setRepository(new File(request.getRealPath("/")
+ "imgs"));// 设置存放临时文件的目录,web根目录下的imgs目录
// 用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 设置最大上传尺寸
sfu.setSizeMax(MAX_SIZE);
PrintWriter out = response.getWriter();
// 从request得到 所有 上传域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 处理文件尺寸过大异常
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");
out.println("<a href="/" mce_href="/""upload.html/" target=/"_top/">返回</a>");
return;
}
e.printStackTrace();
}
// 没有文件上传
if (fileList == null || fileList.size() == 0) {
out.println("请选择上传文件<p />");
out.println("<a href="/" mce_href="/""upload.html/" target=/"_top/">返回</a>");
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("请选择上传文件<p />");
out.println("<a href="/" mce_href="/""upload.html/" target=/"_top/">返回</a>");
return;
}
// 得到去除路径的文件名
String t_name = path.substring(path.lastIndexOf("//") + 1);
// 得到文件的扩展名(无扩展名时将得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
// 拒绝接受规定文件格式之外的文件类型
int allowFlag = 0;
int allowedExtCount = allowedExt.length;
for (; allowFlag < allowedExtCount; allowFlag++) {
if (allowedExt[allowFlag].equals(t_ext))
break;
}
if (allowFlag == allowedExtCount) {
out.println("请上传以下类型的文件<p />");
for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
out.println("*." + allowedExt[allowFlag]
+ "???");
out
.println("<p /><a href="/" mce_href="/""upload.html/" target=/"_top/">返回</a>");
return;
}
long now = System.currentTimeMillis();
// 根据系统时间生成上传后保存的文件名
String prefix = String.valueOf(now);
// 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
String u_name = request.getRealPath("/") + "imgs/"
+ prefix + "." + t_ext;
try {
File file = new File(u_name);
// if(!file.exists()){
// System.out.print(file.mkdirs());
// System.out.print(file.mkdir());
// }
// 保存文件
fileItem.write(file);
out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext
+ " ??文件大小: " + size + "字节<p />");
out.println("<a href="/" mce_href="/""upload.html/" target=/"_top/">继续上传</a>");
} catch (Exception e) {
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
public void init() throws ServletException {
// Put your code here
}
}
发表评论
-
如何在url中传递中文
2012-04-30 17:00 2660url1. http://hi.baidu.c ... -
javascript阻止冒泡事件处理机制
2012-04-06 23:01 939JavaScript代码 //如果提供了事件 ... -
HTML中添加后退、前进、刷新的超链接
2012-03-30 22:02 16236<!--<a href='javas ... -
用fileupload组件上传文件出现乱码解决方法
2012-03-30 21:32 13774用fileupload组件上传文件出现乱码解决方法www.yj ... -
从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPat
2012-03-30 15:07 1328转:http://zjutsoft.iteye.com/ ... -
getRequestDispatcher()与sendRedirect()的区别
2012-03-24 15:47 26501.request.getRequestDispatch ... -
tomcat配置数据库连接池成错误
2012-03-23 17:48 1257在TOMCAT5.5.X的版本中配置数据源会出现这样的错 ... -
Connection DBUtils (封装了原始JDBC对数据库的操作的一个开源类库)
2012-03-22 18:08 1497DBUtils是Apache组织提供的一个能方便的对各种 ... -
tomcat配置数据库连接池2
2012-03-22 17:49 878为了简化通过连接池获取数据库连接的过程,JDBC ... -
tomcat配置数据库连接池
2012-03-22 17:50 988数据库连接是比较耗 ... -
CKeditor配置(转)
2012-03-22 17:50 13261ckeditor是fckeditor的下一代版本,下面就 ... -
常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类
2012-03-22 17:50 1393现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两 ... -
struts2框架验证xml中DTD错误解决办法
2012-03-13 09:12 2971Struts2.2之后,特别是Struts2.2.3,xw ... -
Tomcat 出现 Socket acdept failed 时的解决方法
2012-03-13 08:28 881昨天编Strut2的项目时,myeclipse总是报出如下的错 ...
相关推荐
实现asp.net中使用fileupload控件上传图片前预览功能,可兼容ie6,ie7,ie8,火狐等浏览器,实现真正的上传图片前预览,节约网络资源
主要为大家详细介绍了使用fileupload实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用FileUpload上传图片实现图片预览
tp5+fileupload上传图片功能,为自己工作中用到,在网上搜索相关资料,并且整理后的代码,如果有疑问,请留言。
NULL 博文链接:https://edicky.iteye.com/blog/269166
2.图片上传过程中,以进度条形式显示其上载情况 3.图片上载到服务器,保存到系统特定文件夹下(此处为uploads文件夹),同时提供接口将图片信息保存到数据库中 4.提供查询功能,可根据文件名称、类型进行模糊查询
J2EE上基于commons-fileupload实现的文件上传示例
java实现图片上传到数据库并显示,利用Struts2和commons-fileupload-1.2.1.jar,代码调试通过 完美运行。
FileUpload 文件上传组件的ASP.NET实例,基于主副窗口的上传程序,利用线程提升上传... ASP.NET FileUpload上传图片并解决上传限制 解决FileUpload控件上传文件大小限制 ASP.NET中实现FileUpload多文件上传
课工厂新闻管理系统 素材 数据库脚本 笔记 合集 课程介绍 commons-fileupload组件 编码实现图片上传
源代码 博文链接:https://joerong666.iteye.com/blog/182980
使用asp.net 2.0新控件FileUpload实现图片上传,几乎每行都有注释,适合一切初学者。。。
JSF+rich 实现 fileUpload java代码实现上传文件和图片,代码已经测试过,架包完整,下载后可以直接运行
Java实现图片上传
jquery实现图片上传,以及图片裁切.后台采用jsp Servlet实现.
该文件是一个asp.net网站,以简单的代码来说明,在asp.net中flash与IHttpHandler接合实现多图片上传。 这个flash只能上传图片。
该上传的实现使用到了apache公司的fileupload组件。通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ...
内含文档说明和demo演示!~ 用struts的commons-fileUpload.jar实现文件上传,所以文件都可以,并另加图片预览功能!~ 采用简单常用jsp+servlet实现,同样对使用struts实现上传进行了说明~
批量上传图片 可以实现动态的添加fileupload控件
minio图片上传Demo