12文件上传

两盒软妹~` 提交于 2020-01-07 21:47:52

(webok项目中,up.jsp)

服务器运行,http://localhost:8080/up.jsp,会出现文件上传页面,上传文件

1 单文件上传

----------------------up.jsp------------------------------


<%--
  Created by IntelliJ IDEA.
  User: ATM
  Date: 2020/1/3
  Time: 15:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>单文件上传</h3>

<%--请求方式必须为post,必须加一个属性--%>
<form action="upload" method="post" enctype="multipart/form-data">
    图片:<input type="file" name="ufile"> <input type="submit" value="提交">
</form>

</body>
</html>

Upload.java

package org.example.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

//加上注解,方便访问,第二个注解为上传文件必须加的注解
@WebServlet("/upload") @MultipartConfig
public class Upload extends HttpServlet {
//    这里用servlet方法来处理
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      
 ---------------//解决乱码问题-----------------------------
 
        req.setCharacterEncoding("utf-8");
 --------------------------------------------------------
   //这样拿,是拿了一个    
   Part part = req.getPart("ufile");
//        System.out.println(part.getContentType());//文件类型
//        System.out.println(part.getName());//表单名称
//        System.out.println(part.getSize());//文件大小
//        System.out.println(part.getSubmittedFileName());//真实文件名
//        System.out.println(part);


        //接文件,
        // 设置路径 上传到服务器的根目录下的upload目录下,如果不存在,则直接创建此目录
          String path = req.getServletContext().getRealPath("/upload");
          System.out.println(path);//输出路径
          File f = new File(path);
          if (!f.exists()){
              f.mkdirs();
          }
         //写在某一路径下,文件名还按以前的文件名
          part.write(path + "/" + part.getSubmittedFileName());

    }
}

//这段程序会将文件上传到这个目录下
D:\tomcat\webapps\ROOT\upload

2 多文件上传

修改过的up.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>单文件上传</h3>

<%--请求方式必须为post,必须加一个属性--%>
<form action="upload" method="post" enctype="multipart/form-data">
    图片:<input type="file" name="ufile"> <input type="submit" value="提交">
</form>

<h3>多文件上传</h3>

<%--请求方式必须为post,必须加一个属性  multiple表示多的意思--%>
<form action="uploads" method="post" enctype="multipart/form-data">
    图片:<input type="file" name="ufile" multiple> <input type="submit" value="提交">
</form>
</body>
</html>

Uploads.java

package org.example.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.util.Collection;

//加上注解,方便访问,第二个注解为上传文件必须加的注解
@WebServlet("/uploads") @MultipartConfig
public class Uploads extends HttpServlet {
    //    这里用servlet方法来处理
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("utf-8");


        //接文件,
        // 设置路径 上传到服务器的根目录下的uploads目录下,如果不存在,则直接创建此目录
        String path = req.getServletContext().getRealPath("/uploads");
        System.out.println(path);//输出路径
        File f = new File(path);
        if (!f.exists()){
            f.mkdirs();
        }
        //写在某一路径下,文件名还按以前的文件名
       Collection<Part> ps = req.getParts();
        for (Part p : ps){
            String n = p.getName();
            if ("ufile".equals(n)){
                
                String name = p.getSubmittedFileName();

//                p.write(path + "/" + name);//这句是不修改原文件名
//修改文件名(计算机各种硬件id号+计算机时钟)
                String newname = UUID.randomUUID().toString() + name.substring(name.lastIndexOf("."));
                p.write(path + "/" + newname.toLowerCase());
            }
        }

    }
}

//这段程序会将文件上传到这个目录下
D:\tomcat\webapps\ROOT\uploads

每次服务器关闭或者重启这两个文件夹都会消失,里面的数据也会自动删除

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!