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

    package com.peng.web;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.codec.digest.DigestUtils;
    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;
    
    public class uploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    //上传路径
    File file =new File("E:/upload");
    //上传临时路径
    File tFile = new File("E:/tempupload");
    //判断文件夹是否存在,如果不存在就创建
    if (!file.exists()) {
    file.mkdir();
    }
    //判断临时文件夹是否存在,如果不存在就创建
    if (!tFile.exists()) {
    tFile.mkdir();
    }
    //判断form中enctype="multipart/form-data"有没有写
    if (ServletFileUpload.isMultipartContent(request)) {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    //设置缓冲区大小
    factory.setSizeThreshold(10*1024);
    //设置临时文件夹
    factory.setRepository(tFile);
    
    ServletFileUpload upload = new ServletFileUpload(factory);
    //设置文件上传的大小
    upload.setSizeMax(10*1024*1024);
    
    try {
    //获取表单元素传过来的值
    List<FileItem> fileItems = upload.parseRequest(request);
    for(FileItem item : fileItems){
    if (item.isFormField()) {
    //普通的表单元素
    item.getFieldName();//获取表单的name
    item.getString();//获取表单的值
    }else{
    //文件元素,进行io操作
    item.getName();//上传文件的文件名
    item.getFieldName();//获取文件的name属性
    item.getContentType();//获取文件的类型
    item.getSize();//获取文件的大小
    
    InputStream inputStream = item.getInputStream();
    //根据MD5的值判断文件系统中是否存在被上传的文件
    String path = haveFile(inputStream);
    if(path != null) {
    System.out.println("文件已经存在:" + path);
    } else {
    BufferedInputStream bis = new BufferedInputStream(item.getInputStream());
    
    String newFileName = getFileNewName(item.getName());
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(file,newFileName)));
    
    byte[] buffer = new byte[1024];
    int len = -1;
    while((len = bis.read(buffer)) != -1) {
    bos.write(buffer, 0, len);
    }
    bos.flush();
    bos.close();
    bis.close();
    }
    
    }
    }
    
    } catch (FileUploadException e) {
    e.printStackTrace();
    }
    
    }
    }
    //防止名字重复
    private String getFileNewName(String name) {
    String extName = name.substring(name.lastIndexOf("."));
    UUID uuid = UUID.randomUUID();
    String newName = uuid.toString() + extName;
    return newName;
    }
    
    //查看是否有相同的文件
    public String haveFile(InputStream inputStream) {
    
    String path = null;
    try {
    String md5 = DigestUtils.md5Hex(inputStream);
    
    File file = new File("E:/upload");
    File[] files = file.listFiles();
    for(File subFile : files) {
    InputStream ins = new FileInputStream(subFile);
    String subFileMd5 = DigestUtils.md5Hex(ins);
    if(md5.equals(subFileMd5)) {
    path = subFile.getPath();
    }
    }
    
    
    } catch (IOException e) {
    e.printStackTrace();
    }
    
    return path;
    
    }
    
    }
  • 相关阅读:
    Halcon 如何将图像转化为矩阵形式
    Halcon 图像分割
    Halcon intensity算子,用于计算灰度的均值和方差
    Halcon draw_region接口
    Halcon scale_image 函数用法技巧
    Halcon 保存图像
    Halcon 读取多张图片
    Halcon 算子 sub_image add_image mult_image div_image
    Halcon 算子 get_grayval 用于读取图像的灰度值
    Halcon 算子 convert_image_type 转换图像类型
  • 原文地址:https://www.cnblogs.com/fudapeng/p/3755207.html
Copyright © 2011-2022 走看看