zoukankan      html  css  js  c++  java
  • 上传文件详解

    首先,创建文件夹用来存放上传的文件,起名为upload(名称任意取);在工程中导入commons-fileupload-1.2.1和commons-io-2.4两个jar包,如下图:

    然后,做一个简单的前台页面:

     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="${pageContext.request.contextPath }/fileUpload" method="post" enctype="multipart/form-data">
    11         <input type="text" name ="username"><br>
    12         <input type="file" name="filename"><br>
    13         <input type="submit" value="上传">
    14     </form>
    15 </body>
    16 </html>

    最后,创建对应Servlet:

     1 package demo;
     2 
     3 import java.io.FileOutputStream;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.OutputStream;
     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.FileUploadException;
    16 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    17 import org.apache.commons.fileupload.servlet.ServletFileUpload;
    18 
    19 public class FileUploadServlet extends HttpServlet {
    20 
    21     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    22         request.setCharacterEncoding("UTF-8");
    23         //接收上传的文件
    24         try {
    25             //1.创建磁盘文件项工厂
    26             DiskFileItemFactory factory = new DiskFileItemFactory();
    27             
    28             //2.创建文件上传核心类
    29             ServletFileUpload upload = new ServletFileUpload(factory);
    30             
    31             //3.解析request-----获得文件项集合
    32             List<FileItem> parseRequest = upload.parseRequest(request);
    33             
    34             //4.遍历文件项集合
    35             for (FileItem item : parseRequest) {
    36                 //5.判断是普通表单项/文件上传项
    37                 boolean formField = item.isFormField();//true代表普通表单项,false代表文件上传项
    38                 if (formField) {
    39                     String fieldName = item.getFieldName();
    40                     String fieldValue = item.getString();
    41                     System.out.println(fieldName + "-----" + fieldValue);
    42                 }else {
    43                     //获得上传文件的名称
    44                     String fileName = item.getName();
    45                     
    46                     /*
    47                      * 获得上传文件的内容
    48                      */
    49                     InputStream in = item.getInputStream();
    50                     String path = this.getServletContext().getRealPath("/upload"); 
    51                     OutputStream out = new FileOutputStream(path + "/" + fileName);
    52                     int len = 0;
    53                     byte[] buffer = new byte[1024];
    54                     while((len=(in.read(buffer)))!=-1) {
    55                         out.write(buffer, 0, len);
    56                     }
    57                     out.close();
    58                     in.close();
    59                 }
    60             }
    61             
    62         } catch (FileUploadException e) {
    63             e.printStackTrace();
    64         }
    65     }
    66 
    67     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    68         doGet(request, response);
    69     }
    70 }

    启动工程,可以正常上传,上传的文件存到了tomcat/webapps中该项目下的upload文件夹中。

  • 相关阅读:
    云计算解决方案百度文库
    【QA5】【mysql问题】ERROR 1045 (28000): Access denied for...
    linux系统管理 简单常用命令
    【QA4】【sudoers问题解决】(*** is not in the sudoers file.This incident will be reported)
    自动化测试框架实践1autotest
    Syndication命名空间实现RSS功能学习
    Javascript中撤销方法
    asp.net 中一次性更新所有GRIDVIEW的记录(转)
    Oralce 一次执行多条语句
    asp.net 防注入式攻击
  • 原文地址:https://www.cnblogs.com/AI-xiaocai/p/10685960.html
Copyright © 2011-2022 走看看