zoukankan      html  css  js  c++  java
  • 在做文件上传时.使用了MultipartFile时,文件太小导致错误的解决方案.

    今天出现了这么一个问题...当用户上传的文件太小时.导致文件上传失败,然后一顿乱找原因...发现 ---
    当文件上传时在tomcat的临时路径里不存在.( 上传文件tomcat会存放在一个他自己的临时路径中,当代码结束时tomcat会自动销毁 ),所以我认为文件上传的前端出现了问题 因为( 虽然在后边拿到了文件名等数据,但是既然不存在于tomcat的临时路径,那么就没上传成功... )
    最终把问题锁定在了 <input type="file" multiple="multiple" name="file_upload" /> 请选择上传文件 这一行中  multiple="multiple" 元素,发现并不是它的原因,它的主要作用是多个上传----( 在这一个输入框中,同时上传多个图片~可以多选 ),
    然后我就迷茫了,开始思考为什么临时路径会不存在我上传的小文件( 其实是tomcat的优化 如果文件过小并不存放于临时路径中,只有当文件较大时 缓存不够用的时候,才放在临时路径中 )


    原因:
     由于使用了MultipartFile类,而InputStream的构造需要File类型,所以我把MultipartFile强转成了File类型---过程如下
          CommonsMultipartFile f = (CommonsMultipartFile)file;  //变量file类型为MultipartFile
                    DiskFileItem fi = (DiskFileItem)f.getFileItem();
                    File thisFile = fi.getStoreLocation();
                    InputStream inStream = new FileInputStream(thisFile); //读入原文件
    因为文件太小,并不存在于临时路径中 所以把thisFile放在 new FileInputStream()中的时候导致了文件不存在问题.

    解决方案:

    InputStream inStream = file.getInputStream();//file为MultipartFile类型 其实在MultipartFile里封装了inputStream方法,直接拿即可。

  • 相关阅读:
    How to change hostname on SLE
    How to install starDIct on suse OS?
    python logging usage
    How to reset password for unknow root
    How to use wget ?
    How to only capute sub-matched character by grep
    How to inspect who is caller of func and who is the class of instance
    How to use groovy script on jenkins
    Vim ide for shell development
    linux高性能服务器编程 (二) --IP协议详解
  • 原文地址:https://www.cnblogs.com/llja/p/7374922.html
Copyright © 2011-2022 走看看