Spring-boot之jQuery File Upload后台配置方法

文件上传在Spring-boot中本身配置起来非常简单,但是有个多文件传递和单个传递的问题。

两者配置是略有不同的,而且还有一些让我这个技术小白很容易踩坑的地方。

重要的几点:

上传的是单个文件:  MultipartFile file

上传的是多个文件: MultipartFile[] file

先从单个文件上传 后台配置来说:

public Map uploadFile(@RequestParam("file") MultipartFile file,HttpServletRequest req) { // 注意的是 MultipartFile file 表示上传单个文件

 File tempFile = new File( 文件上传目录 );
  if (!tempFile.getParentFile().exists()) {
    tempFile.getParentFile().mkdirs();   // 如果没有找到上传的目录就会创建这个目录
  }

  if (!file.isEmpty()) { 

    try {
      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));   // 开始上传

      out.write(file.getBytes());
      out.flush();
      out.close();

    } catch (FileNotFoundException e) {

      e.printStackTrace();
      result.put("msg", "上传文件产生错误," + e.getMessage());
      result.put("result", false);

     }  catch (IOException e) {

      ....

    }

  }

  return result;

}

  

spring-boot后台完整代码:

 1 import java.io.BufferedOutputStream;
 2 import java.io.File;
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Date;
 8 import java.util.HashMap;
 9 import java.util.Map;
10
11 import javax.servlet.http.HttpServletRequest;
12
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.beans.factory.annotation.Value;
15 import org.springframework.web.bind.annotation.RequestMapping;
16 import org.springframework.web.bind.annotation.RequestMethod;
17 import org.springframework.web.bind.annotation.RequestParam;
18 import org.springframework.web.bind.annotation.ResponseBody;
19 import org.springframework.web.bind.annotation.RestController;
20 import org.springframework.web.multipart.MultipartFile;
21
22 @RestController
23 @RequestMapping("/upload")
24 public class UploadFileController {
25     // 存储文件
26     @RequestMapping(value = "/uploadFile",method={RequestMethod.POST})
27     public Map uploadFile(@RequestParam("file") MultipartFile file,HttpServletRequest req) {
28         Map result = new HashMap<>();
29         SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");// 设置日期格式
30         String dateDir = df.format(new Date());// new Date()为获取当前系统时间
31         File tempFile = new File(fileDIr + dateDir + File.separator
32                 + file.getOriginalFilename());
33
34         if (!tempFile.getParentFile().exists()) {
35             tempFile.getParentFile().mkdirs();
36         }
37         if (!file.isEmpty()) {
38             try {
39                 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
40                 // "d:/"+file.getOriginalFilename() 指定目录
41                 out.write(file.getBytes());
42                 out.flush();
43                 out.close();
44             } catch (FileNotFoundException e) {
45                 e.printStackTrace();
46                 result.put("msg", "上传文件产生错误," + e.getMessage());
47                 result.put("result", false);
48             } catch (IOException e) {
49                 e.printStackTrace();
50                 result.put("msg", "上传文件产生错误," + e.getMessage());
51                 result.put("result", false);
52             }
53             result.put("msg", "上传成功");
54             result.put("result", true);
55         } else {
56             result.put("msg", "上传文件为空");
57             result.put("result", false);
58         }
59         return result;
60     }
61 }

这段代码可以直接放到spring-boot中跑,

再从多个文件上传 后台配置来说:

jQuery File Upload 就是一个支持多文件上传插件,这个时候如果继续调用上面的单文件上传的接口就直接前台报错啦,当然还有其他的原因。

注意以下几点就好:

1. 由于是多文件,所以上传过来的是一个数组文件,所以需要用: MultipartFile[] multipartfiles

2.由于jQuery File Upload的输入框中:<input id="fileupload" type="file" name="files[]" multiple>

name="files[]"   这个name需要和  @RequestParam(value ="files[]")的value值相等,这样就可以上传文件了。

完整后台代码

 1 import java.io.File;
 2 import java.util.Map;
 3
 4 import javax.servlet.http.HttpServletRequest;
 5 import javax.servlet.http.HttpServletResponse;
 6
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RequestMethod;
 9 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.bind.annotation.RestController;
11 import org.springframework.web.multipart.MultipartFile;
12
13 @RestController
14 @RequestMapping("/upload")
15 public class UploadFileController {
16     // 存储文件
17     @RequestMapping(value = "/uploadFile",method={RequestMethod.POST})
18     public Map uploadFile(@RequestParam(value ="files[]") MultipartFile[] multipartfiles,HttpServletRequest req) {
19         Map result = new HashMap<>();
20        String savePath = ‘文件目录‘;
21        if(null != multipartfiles && multipartfiles.length > 0){
22            //遍历并保存文件
23            for(MultipartFile file : multipartfiles){
24                file.transferTo(new File(savePath + file.getOriginalFilename()));
25            }
26        }
27         result.put("msg", "上传成功");
28         result.put("result", true);
29         return result;
30     }
31 }

最后说一说前端jQuery File Upload的使用方法:

放到spring-boot项目下的static目录下面:

这样就可以了,完了....所以使用起来非常的方便

时间: 2024-08-03 07:51:57

Spring-boot之jQuery File Upload后台配置方法的相关文章

jquery file upload 后台收到的文件名中文乱码, filename中文乱码

本周用jquery file upload做上传文件的功能,后台会接受文件,并且截取文件名作为字符存入数据库.基本功能实现时候,试了几个文件,发现如果文件名如果没有中文就OK,如果文件名带中文的话,后台收到的就是中文乱码,怎么去解码都没用. 例如,上传的文件叫做"昕锐配置表.xls",但是到后台收到的却是 "鏄曢攼閰嶇疆琛?xls" ,如下图: 似乎也不是解码能解决的问题. 于是乎想弄清楚这个文件名是在哪个环节出问题的.首先写了一个最简单的html页面,里面就是最原

jQuery File Upload 单页面多实例的实现

jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示.插件基于开放的标准,如 HTML5 和 JavaScript ,不需要额外的浏览器插件(例如使用Adobe 的 Flash ),在旧版浏览器中使用 XMLHttpRequest

jQuery File Upload

jQuery File Upload 需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为了代码的简洁所以就开始寻求其他的方法,期间试过uploadify,但是由于样式始终调不出来,最后就放弃了,直到发现这么个小巧的玩意,jQuery File Upload. 本文包含了upload的js实现,html的分析,css的实现等内容,文章末尾有git地址

jquery File upload使用总结

1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jquery file upload 下载   地址:https://github.com/blueimp/jQuery-File-Upload/tags jquery file upload API    地址:https://github.com/blueimp/jQuery-File-Upload

jQuery File Upload跨域上传

最近在做一个一手粮互联网项目,方案为前后端分离,自己负责前端框架,采用了Requirejs+avalonjs+jquery三个框架完成. 前后端通过跨域实现接口调用,中间也发现了不少问题,尤其是在富文本编辑器和上传插件跨域的处理过程中,费劲了脑汁,总算解决了. 上传选择了jQuery File Upload,兼容性还是相对不错,并且支持跨域,但是没有一个完整的跨域Demo,只能看源码找帮助. 下载地址:https://github.com/blueimp/jQuery-File-Upload 页

用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮

需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为了代码的简洁所以就开始寻求其他的方法,期间试过uploadify,但是由于样式始终调不出来,最后就放弃了,直到发现这么个小巧的玩意,jQuery File Upload. 本文包含了upload的js实现,html的分析,css的实现等内容,文章末尾有git地址 最简运行时 官网下载的demo有N多

jQuery File Upload 的基本使用

jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示:支持各种动态语言开发的服务器端. 一.最少配置 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>jQuery File Upload Example</title> </head>

Spring Boot 开发微信公众号后台

Hello 各位小伙伴,松哥今天要和大家聊一个有意思的话题,就是使用 Spring Boot 开发微信公众号后台. 很多小伙伴可能注意到松哥的个人网站(http://www.javaboy.org)前一阵子上线了一个公众号内回复口令解锁网站文章的功能,还有之前就有的公众号内回复口令获取超 2TB 免费视频教程的功能(免费视频教程),这两个都是松哥基于 Spring Boot 来做的,最近松哥打算通过一个系列的文章,来向小伙伴们介绍下如何通过 Spring Boot 来开发公众号后台. 1. 缘起

jQuery File Upload文件上传插件使用

jQuery File Upload 是一个Jquery文件上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示:支持各种动态语言开发的服务器端.官网链接:https://github.com/blueimp/jQuery-File-Upload/wiki 特点:拖放支持:上传进度条:图像预览:可定制和可扩展的:兼容任何服务器端应用平台(PHP, Python, Ruby on Rails, Java, Node.js, Go etc.). 使用方法: 1