简单的servlet实现上传文件(图片)

用于马上开始的 教师云管理系统 用户对头像的更改以及教师对视频文件的上传

前台html:

必须设置post提交方式和 enctype=“multipart/form-data”

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="upfile" method="post" enctype="multipart/form-data">
    <input type="file" name="file1"> <br><br>
    <input type="submit" value="上传文件">
</form>
</body>
</html>
java代码

servlet:

package servlet;

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;

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 java.io.*;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

@WebServlet(name = "FileUp2Servlet")
public class FileUp2Servlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置编码方式
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("gb2312");

//        设置输出
        PrintWriter outprint = response.getWriter();

//        设置文件目录
        String webroot = this.getServletContext().getRealPath("/");
        File temppath = new File(webroot + "fileuploadtemp");
        String dir = webroot+ File.separator + "upload";
        File path = new File(webroot+ File.separator + "upload");
        if (!temppath.exists()) {
            temppath.mkdirs();
        }
        if (!path.exists()) {
            path.mkdirs();
        }

//      设置文件类型(后期可新增文件类型)
        String[] type= new String[]{".jpg",".png",".jpeg",".gif"};

//      创建文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024,
                temppath);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024 * 1024 * 10);
        try {
            List<FileItem> fileItems = upload.parseRequest(request);
            Iterator<FileItem> it = fileItems.iterator();

//            遍历request file
            while (it.hasNext()) {
                FileItem fi = it.next();
//                判断该表单为普通表单类型
                if (fi.isFormField()) {
                    System.out.println("字段名:" + fi.getFieldName());
                    System.out.println("字段值:" + fi.getString());
                } else {
                    InputStream in = fi.getInputStream();
                    String name = fi.getName();//获得文件原名

//                    得到文件后缀名
                    int index = name.lastIndexOf(".");
                    String endWith = name.substring(index);

//                    判断是否符合类型
                    boolean TypeExists = Arrays.asList(type).contains(endWith);
                    if (!TypeExists) {
                        outprint.print("<script>\n" +
                                "alert(\"文件类型错误,只允许jpg,png,jpeg,gif\");location=\"fileup.html\";\n" +
                                "</script>");
                        return;
                        }

                        String newFimeName = System.currentTimeMillis() + endWith;//新文件名

//                    创建上传文件
                        FileOutputStream out = new FileOutputStream(new File(
                                dir + "/" + newFimeName));

                        byte buffer[] = new byte[1024];
                        int len = 0;
                        while ((len = in.read(buffer)) > 0) {
                            out.write(buffer, 0, len);//写入大小
                        }
                        in.close();
                        out.close();
                        fi.delete();
                        outprint.print("上传成功");
                    }
                }
            } catch(FileUploadException e){
                response.getWriter().write(e.toString());
            }


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

pom.xml

使用了两个jar包

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.1</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.4</version>
    </dependency>
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值