1、前言
文件上传是我们经常遇到的,使用我自己就写了一个小小的代码。
2、准备工作
你可以新建一个 javaweb 项目,用于测试我们自己写的代码,如果在测试的项目中成功的话,在将这写代码写入正式的项目中。
新建的web项目:
还需要引入2个 JAR 包:
将这两个jar 加入 Libraries 中即可。
3、编辑上传文件界面
在 WebRoot 中新建 index.jsp 文件,然后编写如下:
<form action="<%=basePath%>uploadFile" enctype="multipart/form-data" method="post"> <input type="file" name="file"> <input type="submit"> </form>
4、上传文件到指定文件
代码如下:
package com.stydy.servlet; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * 实现文件上传的方法 * @author TongZhou * 2017年10月09日 */ @WebServlet("/uploadFile") public class UploadFile extends HttpServlet { /** * doGet方法 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * doPost 方法 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决上传时的乱码问题 request.setCharacterEncoding("utf-8"); //创建一个工厂 DiskFileItemFactory factory=new DiskFileItemFactory(); //通过工厂创建解析器 ServletFileUpload upload=new ServletFileUpload(factory); //解析 request try { List<FileItem> files=upload.parseRequest(request); //获取传入文件 FileItem file=files.get(0); //获取文件名 System.out.println(file.getName()); //获取文件的上传类型 System.out.println(file.getContentType()); //获取本地file文件 File f=new File("G://a.txt"); //写入上传的内容 file.write(f); } catch (FileUploadException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } } }
5、实验结果如下:
我是在我电脑的 G://a.txt 新建的一个a.txt 文本件,然后我往里上传数据。
浏览器:
在 console 中有输出的,因为我在 Servlet 中有输出。
文件上传成功。