多文件上传

骑猪看日落 2022-06-17 14:28 377阅读 0赞

现象:
实现多文件上传:
这里写图片描述

解决办法:
1:在页面提交表单加上如下代表表单中有文件上传
这里写图片描述

2:在表单中添加文件上传的选择框
这里写图片描述

3:在js中动态添加文件上传框的数量
这里写图片描述

4:在action中属性驱动接收文件上传,多文件这里使用数组接收。
这里写图片描述

5:action中写表单提交的方法处理文件上传,这里文件位置放在配置文件中,便于修改!
这里写图片描述

6:其中 页面添加了这个属性每个文件上传的选择框将支持多选!
这里写图片描述

7:从配置文件中获取参数的方法
这里写图片描述

  1. ----------------------
  2. //从配置文件中读取值
  3. public static Object getParamFromProp(String key){
  4. InputStream is=MyUtils.class.getClassLoader().getResourceAsStream("parameters.properties");
  5. BufferedReader br= new BufferedReader(new InputStreamReader(is));
  6. Properties props = new Properties();
  7. try {
  8. props.load(br);
  9. return props.get(key);
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }
  13. return null;
  14. }
  15. ------------------action方法-------
  16. private File[] file ;
  17. private String[] fileFileName;
  18. private String[] fileContentType;
  19. public File[] getFile() {
  20. return file;
  21. }
  22. public void setFile(File[] file) {
  23. this.file = file;
  24. }
  25. public String[] getFileFileName() {
  26. return fileFileName;
  27. }
  28. public void setFileFileName(String[] fileFileName) {
  29. this.fileFileName = fileFileName;
  30. }
  31. public String[] getFileContentType() {
  32. return fileContentType;
  33. }
  34. public void setFileContentType(String[] fileContentType) {
  35. this.fileContentType = fileContentType;
  36. }
  37. //邮箱消息的添加
  38. public void addEmailMessage() throws IOException{
  39. //获取配置文件中的文件存放路径
  40. String fileurl=(String) MyUtils.getParamFromProp("Mailpath");
  41. request.setCharacterEncoding("UTF-8");
  42. response.setContentType("text/html;charset=utf-8");
  43. StringBuffer sb=new StringBuffer();
  44. File[] files=getFile();
  45. if (files != null && files.length > 0) {
  46. for (int i = 0; i < files.length; i++) {
  47. long a=new Date().getTime(); //设置时间戳用于文件名字
  48. FileOutputStream fos = new FileOutputStream(fileurl + "\\" + a+getFileFileName()[i]);
  49. FileInputStream fis = new FileInputStream(files[i]);
  50. byte[] buffer = new byte[1024];
  51. int len = 0;
  52. try {
  53. while ((len = fis.read(buffer)) > 0) {
  54. fos.write(buffer, 0, len);
  55. }
  56. if(i==files.length-1){
  57. sb.append(a+getFileFileName()[i]);
  58. }else{
  59. sb.append(a+getFileFileName()[i]).append(",");
  60. }
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. }
  64. fis.close();
  65. fos.close();
  66. }
  67. }
  68. em.setAttach(sb.toString());
  69. Date date=new Date();
  70. em.setMailDate(date);
  71. em.setFlags(0);
  72. em.setMsgicode(null);
  73. em.setRetransmission(0);
  74. logger.debug("后台邮箱消息的新建"+em);
  75. emailService.saveEmailMessage(em);
  76. response.getWriter().write("邮箱发送成功!!!");
  77. }
  78. ----------------------页面的动态添加-----------
  79. //邮箱附件的增加
  80. function addattach(){
  81. var html = $("<br><input type='file' name='file' multiple='multiple'>");
  82. var button = $("<input type='button' name='button' value='删除'>");
  83. $("#addattach").append(html).append(button);
  84. button.click(function()
  85. {
  86. html.remove();
  87. button.remove();
  88. });
  89. }

发表评论

表情:
评论列表 (有 0 条评论,377人围观)

还没有评论,来说两句吧...

相关阅读

    相关 文件

    现象: 实现多文件上传: ![这里写图片描述][SouthEast] 解决办法: 1:在页面提交表单加上如下代表表单中有文件上传 ![这里写图片描述][Sou