• 关于上传文件的一点总结


    因为最近在做文件上传的功能,所以怕遗忘就稍微总结一下

    1,上传文件最好使用commons-file-upload这个插件(貌似支持大文件上传)

    2,关于多文件选择的问题

        默认情况下,是禁止多选文件的,即便是使用Ctrl和Shift也无法多选文件,

        这时我们只需要在file标签上添加multiple="multiple"即可,貌似这个属性是H5的属性,添加完后再选择文件时可以通过Ctrl或shift来多选文件

        <input type="file" name="files" multiple="multiple" id="uploadFile" />

    3,关于在页面中使用了文件上传功能,造成无法使用Ajax的情况

        由于文件上传是以二进制流的形式进行传输的,而身为AJAX的关键对象之一的xmlhttp对象传输的却是xml格式的字符流,所以导致无法使用Ajax来异步提交文件    但是我们可以通过一些手段变相的实现Ajax的功能,我们可以通过iframe,将表单的提交目标设置为iframe,当我们提交表单时会先将图片等数据提交给iframe并在这个隐藏的iframe中向后台提交,

      这个时候会造成“页面无刷新”的假象!

        可能我们手动写的时候会比较麻烦,但是最简便的方式就是利用EasyUI中的form插件,我们只需要按照正常方式去书写表单,然后利用EasyUI来封装这个表格,然后设置相应的提交地址即可!

        但是EasyUI底层也是通过iframe的方式来“异步”提交文件的,但是这是在做项目时最简便的方式!

    4,关于文件上传保存的地址问题

        一般我们可能会将上传的文件保存在项目目录的某一个文件夹下,但是这有一个非常大的隐患就是,当我们重新部署项目时,新的项目会将就的项目覆盖掉,也就是说当部署项目时,之前上传的文件就会被清空。

     一般我们或许项目的目录无非就是request.getSession().getServletContext().getRealPath("/")等其他方式,

      有的时候我们在main方法里面测试,得到的项目路径为D://Project/xxx

      但是等项目在tomcat等服务器上运行时,这个地址就莫名其妙的”变“成tomcat的地址了,这其实解释起来很简单,当我们利用main在运行时,这个时候只是运行项目实际的保存目录,当我们将项目部署在Tomcat等服务器上时

      我们通过地址访问的项目是运行部署在Tomcat上的项目,所以就会导致部署时项目的路径和main方法中的项目路径不一致的问题

        所以我们在部署新的项目时一定要做好备份操作,以免将之前的文件给覆盖掉,最简单的办法就是,将文件上传完成之后,通过Quartz等定时框架每隔多长时间就将文件复制到硬盘的其他目录中,这样就可以避免悲剧的发生!

    5,关于不同平台上地址不通用的问题

        在windows上我们要访问某个文件夹的地址一般是D:软件ProgramPPT(在windows上D:/软件/Program/PPT  也可以识别的)

      但是在Linux Unix系统中,地址是D:/软件/Program/PPT

     如果将D:软件ProgramPPT这样的地址放到Linux上就无法识别了

      解决办法就是我们可以利用  File.separator 这个属性即可解决:

      "D"+File.separator+"Project"+File.separator+"xxx"

      系统会自动根据操作系统的不同来生成不同的斜杠,这样就可以避免,在windows上编写的路径到了Linux上无法识别了!

    这些只是在日上生活中遇到的问题,和“解决办法”,只能止痛,若要根治,还得认真学习和研究!

    如果上面所说的有不对的地方还希望大家能够严厉指出!

  • 相关阅读:
    19.Mybatis之动态SQL
    18.Mybatis的配置文件标签属性自动提示
    17.Mybatis的基本使用及入门案例
    16.jQuery属性操作
    15.jQuery淡入淡出效果
    14.jQuery常用方法
    13.jQuery选择器
    12.JavaScript基础知识
    11.浅析Java中的final关键字
    10.基于Tomcat的SmartUplaod文件上传
  • 原文地址:https://www.cnblogs.com/FranklinD/p/4262434.html
Copyright © 2020-2023  润新知