Servlet实现多文件上传2.0
来源:互联网 发布:坚持做一件事 知乎 编辑:程序博客网 时间:2024/05/29 18:31
今天项目需要添加用户,表单里有个上传图片功能,于是百度了很多方法,都比较乱。所以今天整理了一下文件上传功能。
文件上传需要:
1.commons-fileupload-1.3.jar;
2.commons-io-2.4.jar;
这里的jar包版本应该无所谓,反正我的是这样子。
然后java代码:
import java.io.File;import java.io.IOException;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.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * Don't ask me, I am also baidu * */public class upfile extends HttpServlet{private String path="D:\\temp";//目录(这里我手动创建的目录)private String tempPath="D:\\temp\\buffer";//临时文件(这里我手动创建的目录)File tempPathFile;public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{ response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); try {//为磁盘创建一个工厂 - - - - - - 基于文件项目DiskFileItemFactory factory=new DiskFileItemFactory();/// /设置工厂约束factory.setSizeThreshold(4096);//设置缓冲区大小,这里是4kbfactory.setRepository(tempPathFile);//设置缓冲区目录// 创建一个新文件上传处理程序ServletFileUpload upload=new ServletFileUpload(factory);//设置整体请求大小限制upload.setSizeMax(4194304);//设置大小文件尺寸,这里是4MB//得到所有文件List<FileItem> items=upload.parseRequest(request);Iterator<FileItem> i=items.iterator();while(i.hasNext()){ FileItem fi=(FileItem)i.next(); String fileName=fi.getName(); fi.getInputStream(); //判断是否为文件 if(!fi.isFormField()){ if(fileName!=null){ File fullFile=new File(fi.getName()); File savedFile=new File(path,fullFile.getName()); System.out.println("文件名:"+fullFile.getName()); fi.write(savedFile); } }else{ String name=fi.getString(); name=new String(name.getBytes("ISO-8859-1"),"utf-8");//这里转换中文乱码问题 System.out.println("name:"+name); } } System.out.println("upload success");} catch (Exception e) {e.printStackTrace();}}public void init()throws ServletException{File uploadFile=new File(path);System.out.println("init");if(!uploadFile.exists()){System.out.println("1");uploadFile.mkdirs();}File tempPathFile=new File(tempPath);if(!tempPathFile.exists()){System.out.println("2");tempPathFile.mkdirs();}}}web.xml配置:
<servlet> <servlet-name>Upload</servlet-name> <servlet-class>com.bst.file.upfile</servlet-class> </servlet> <servlet-mapping> <servlet-name>Upload</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
html代码:
<!doctype html><html><head><meta charset="utf8"></head><body><form name="myform" action="fileupload.do" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name"><input type="file" name="myfile"><input type="submit" value="上传"></form></body></html>
然后你就会在D:\temp下看到你的文件啦!!
0 0
- Servlet实现多文件上传2.0
- Servlet实现文件上传
- Servlet实现文件上传
- Servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- Servlet实现文件上传
- Servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- servlet实现文件上传
- Servlet实现文件上传
- servlet实现文件上传
- Servlet实现文件上传
- servlet实现文件上传
- 《深度探索C++对象模型》读书笔记
- 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(3)
- iOS开发-Day15-OC继承与多态
- 12、Hibernate映射set与List
- CSS盒模型详解
- Servlet实现多文件上传2.0
- 有关数据库的一些基本知识
- 不写string头文件也能用
- SQL Server 2008 学习笔记(三)视图的创建与修改
- [并查集] hdu1325 Is it a tree ?
- TCP 传输 滑动窗口
- 黑马程序员-C语言中有关宏的一些注意事项
- LeetCode之Merge k Sorted Lists
- 过河问题