zoukankan      html  css  js  c++  java
  • JavaWeb学习-简单文件上传

    今天web学习中遇到文件的上传问题,只是想保存一下学习代码。

    • 需求说明:

    网页中提供一个文件上传按钮实现文件上传到web项目下的目的

    • 所需jar包:

    commons-fileupload-1.2.1.jar

    commons-io-1.4.jar

    • 实现效果:

    • HTML代码
     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10     <form action="UploadServlet" method="post" enctype="multipart/form-data">
    11             用户名<input type="text" />
    12             <input type="file" name="上传文件" />
    13             <input type="submit" name="submit" value="提交"/>
    14     </form>
    15 </body>
    16 </html>
    HTML文件详细代码
    • Servlet代码
      1 package com.zz.servlet;
      2 
      3 import java.io.File;
      4 import java.io.IOException;
      5 import java.text.SimpleDateFormat;
      6 import java.util.Date;
      7 import java.util.List;
      8 
      9 import javax.servlet.ServletException;
     10 import javax.servlet.http.HttpServlet;
     11 import javax.servlet.http.HttpServletRequest;
     12 import javax.servlet.http.HttpServletResponse;
     13 
     14 import org.apache.commons.fileupload.FileItem;
     15 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
     16 import org.apache.commons.fileupload.servlet.ServletFileUpload;
     17 
     18 
     19 /**
     20  * Servlet implementation class UplodServlet
     21  */
     22 public class UplodServlet extends HttpServlet {
     23     private static final long serialVersionUID = 1L;
     24     /**
     25      * @see HttpServlet#HttpServlet()
     26      */
     27     public UplodServlet() {
     28         super();
     29         // TODO Auto-generated constructor stub
     30     }
     31     /**
     32      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     33      */
     34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     35         // TODO Auto-generated method stub
     36         //处理中文乱码,可以用下方的处理乱码替换
     37         //request.setCharacterEncoding("utf-8");
     38 
     39         //创建上传文件操作的工厂类对象
     40         DiskFileItemFactory factory = new DiskFileItemFactory();
     41         
     42         //文件上传的核心类
     43         ServletFileUpload upload = new ServletFileUpload();
     44         
     45         //处理中文乱码
     46         upload.setHeaderEncoding("utf-8");
     47         //设置上传文件的最大大小,单位字节
     48         upload.setFileSizeMax(1024*1024);
     49     
     50         //判断表单的enctype是否是multipart/form-data
     51         if (ServletFileUpload.isMultipartContent(request)) {
     52             try {
     53                 //将请求转换为FileItem对象的集合 
     54                 List<FileItem> itemlist = upload.parseRequest(request);
     55                 for (FileItem item : itemlist) {
     56                     //如果是普通控件的请求数据
     57                     if (item.isFormField()) {
     58                         //得到控件name的属性的值
     59                         System.out.println(item.getFieldName());
     60                         //得到控件的提交的参数值
     61                         System.out.println(item.getString());
     62                         //请求数据的中文乱码
     63                         System.out.println(item.getString("utf-8"));
     64                     }else {//file
     65                         //得到文件名
     66                         System.out.println(item.getName());
     67                         //
     68                         String path="D:/upload";
     69                         File file = new File(path);
     70                         if (!file.exists()) {
     71                             file.mkdirs();
     72                         }
     73                         //String filePath = path + "/" +item.getName();
     74                         //保存文件
     75                         //item.write(new File(filePath));
     76                         
     77                         //item.write(new File(path,item.getName()));
     78                         
     79                         //给文件名加上时间,来减小文件名的重复率
     80                         Date date = new Date();
     81                         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
     82                         String format = sdf.format(date);
     83                         String newName = format + item.getName();
     84                         item.write(new File(path, newName));
     85                                 
     86                         //删除缓存中的数据
     87                         item.delete();
     88                     }
     89                 }
     90             } catch (Exception e) {
     91                 // TODO Auto-generated catch block
     92                 e.printStackTrace();
     93             }
     94         }
     95     }
     96 
     97     /**
     98      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     99      */
    100     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    101         // TODO Auto-generated method stub
    102         doGet(request, response);
    103     }
    104 
    105 }
  • 相关阅读:
    linux 命令
    linux 命令
    linux 命令
    linux命令
    ubuntu 下安装ssh服务,并修改ssh端口
    爬虫基础
    Django之中间件
    Django之用户认证组件
    Django之cookie&session
    Django之forms组件
  • 原文地址:https://www.cnblogs.com/himonkey/p/7297967.html
Copyright © 2011-2022 走看看