美文网首页java开发
java文件上传的注意事项(多图上传)

java文件上传的注意事项(多图上传)

作者: baii | 来源:发表于2017-07-03 18:12 被阅读0次

    1.前期的准备工作

    图片上传,我们需要先来了解一下文件的上传。

    以jsp文件与servlet作为客户端服务器端进行上传下载为例。

    客户端页面(jsp文件)需要设置

    1.表单的method=post

    2.设置enctype=multipart/form-date

    3.使用具有name属s性的file元素

    服务器端(需要借助第三方jar包:commons-fileupload-1.2.2.jar,commons-io-2.2.jar)

    1.创建DiskFileItemFactory

    DiskFileItemFactory factory = new DiskFileItemFactory();

    2.创建ServletFileUpload

    ServletFileUpload upload = new ServletFileUpload(factory);

    3.通过ServletFileUpload的parseRequest方法得到所有的FileItem

    Listlist = upload.parseRequest(request);

    2.开始执行上传操作

    for(FileItem item:list){

    //需要先判断一下是文件(file)还是表单信息

    if (!item.isFormField()) {

    //暂时用时间节点来保证存储的路径的唯一性

    String path = this.getServletContext().getRealPath("\\upload");

    Date date = new Date();

    SimpleDateFormat format = new SimpleDateFormat("/yyyy/MM/dd/HH/mm/ss/");

    File file = new File(path+format.format(date));

    //判断文件是否存在 不存在就创建

    if (!file.exists()) {

    file.mkdirs();

    }

    File file2 = new File(file.getPath(), item.getName());

    FileOutputStream fos = new FileOutputStream(file2);

    IOUtils.copy(item.getInputStream(), fos);

    fos.close();

    }

    上传的文件在Tomcat路径下

    D:\tool\Tomcat\apache-tomcat-6\apache-tomcat-6.0.44\webapps\Upload\upload

    这是单文件上传,通过实践节点来保证唯一性

    因为相同的文件,上传之后会覆盖之前的。所以我们一定要保证上传文件的唯一性

    我们还可以通过在服务器端随机生成UUID号+文件名来生成新的唯一的文件名

    //系统给定的随机的id号---唯一id

    UUID uuid = UUID.randomUUID();

    String fileName = uuid + "_"+item.getName();

    System.out.println("filename:"+fileName);

    File file = new File(parentFile, fileName);

    3.文件上传

    Mapmap = new HashMap<>();

    if(item.isFormField()){

    String key = item.getFieldName();

    if(map.get(key)==null){

    map.put(item.getFieldName(), item.getString("utf-8"));

    }else{

    //复选框值的处理

    map.put(key, map.get(key)+","+item.getString("utf-8"));

    }

    }

    这里我们用的是一个集合Map来接收,通过BeanUtils.populate(user, map);  //将map当成User属性的方式放入到User对象中。(用到了上面第一个jar包)

    4.多图片上传

    我们需要创建一个对象来接收。

    由于我们之前已经做了图片的唯一性操作,所以可以尽情的上传图片,接收的时候用一个队象的List<String>urlList来接收.由于我们之前用的是遍历for(FileItem item:list),所以我们可以把每次遍历的用list来保存。然后也可以转发给前端

    user.getListUrls().add("upload"+File.separator+datePath+File.separator+item.getName());

    request.setAttribute("listUrls", user.getListUrls());

    request.getRequestDispatcher("showImage.jsp").forward(request, response);

    相关文章

      网友评论

        本文标题:java文件上传的注意事项(多图上传)

        本文链接:https://www.haomeiwen.com/subject/znkzcxtx.html