Javaweb中最简单的文件上传

来源:互联网 发布:手机贴纸淘宝 编辑:程序博客网 时间:2024/04/30 19:43

最简单的文件上传

1、在做之前需要导入的jar包组件:

commons-fileupload-1.2.1.jar、commons-io-2.0.jar(依赖包)

2、页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="simpleFileupload" method="post" enctype="multipart/form-data">最简单的文件上传:<input type="file" name="fileupload"/>描述:<input type="text" name="desc"/><input type="submit" value="submit"/></form></body></html>
注意:这里的enctype(编码类型)是“multipart/form-data”

3、servlet代码

package com.xiaojie.simpleFileupload;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;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;/** * Servlet implementation class SimpleFileupload */@WebServlet("/simpleFileupload")public class SimpleFileupload extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");//1、创建一个DiskFileItemFactory工厂        DiskFileItemFactory factory = new DiskFileItemFactory();        //2、创建一个文件上传解析器        ServletFileUpload upload = new ServletFileUpload(factory);        //解决上传文件名的中文乱码        upload.setHeaderEncoding("UTF-8"); factory.setSizeThreshold(1024 * 500);//设置内存的临界值为500KFile linshi = new File("E:\\linshi");//当超过500K的时候,存到一个临时文件夹中factory.setRepository(linshi);upload.setSizeMax(1024 * 1024 * 5);//设置上传的文件总的大小不能超过5Mtry {// 1. 得到 FileItem 的集合 itemsList<FileItem> /* FileItem */items = upload.parseRequest(request);// 2. 遍历 items:for (FileItem item : items) {// 若是一个一般的表单域, 打印信息if (item.isFormField()) {String name = item.getFieldName();String value = item.getString("utf-8");System.out.println(name + ": " + value);}// 若是文件域则把文件保存到 e:\\files 目录下.else {String fileName = item.getName();long sizeInBytes = item.getSize();System.out.println(fileName);System.out.println(sizeInBytes);InputStream in = item.getInputStream();byte[] buffer = new byte[1024];int len = 0;fileName = "e:\\files\\" + fileName;//文件最终上传的位置System.out.println(fileName);OutputStream out = new FileOutputStream(fileName);while ((len = in.read(buffer)) != -1) {out.write(buffer, 0, len);}out.close();in.close();}}} catch (FileUploadException e) {e.printStackTrace();}}}
运行simpleFileupload.jsp文件(如下图)
选择好自己想要上传的文件后,在服务器的e盘下的files文件夹中就可以看到自己上传成功的文件了!!!


6 0
原创粉丝点击