Spring Test之文件上传篇
来源:互联网 发布:python编写上位机 编辑:程序博客网 时间:2024/06/05 06:47
Spring Test之文件上传篇
1、上传需要的简单配置
1.1 导入依赖包,包含文件上传、springtest4+和Junit4+包
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.8.RELEASE</version><scope>test</scope></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
1.2 在springMVC的配置文件上传bean,如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8"/><property name="maxUploadSize" value="1024000000"/></bean>上述代码中,defaultEncoding表示文件上传编码格式,maxUploadSize表示允许上传的文件大小。
2、创建controller
@RequestMapping("/file")@Controllerpublic class fileUpController {@ResponseBody@PostMapping("/up")public String upFile(@RequestParam("file") MultipartFile multipartFile,Model model){String isSuccesString = "success";File file = new File("D:\\files\\");//创建文件夹file.mkdirs();try {//写入新创建的文件夹multipartFile.transferTo(new File(file, "fileName"));} catch (Exception e) {isSuccesString = "fail";}return isSuccesString;}}
3、创建测试类
3.1 简单文件上传(不通过io流)
@WebAppConfiguration@ContextConfiguration({"classpath:spring-context.xml","classpath:spring-mvc.xml"})@RunWith(SpringJUnit4ClassRunner.class)public class MockTest {private static final Logger LOGGER = Logger.getLogger(MockTest.class);@Autowiredprivate WebApplicationContext wbc;MockMvc mockMvc;@Beforepublic void init(){//创建MockMvc对象this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wbc).build();}@Testpublic void test1() {try {ResultActions contentAsString = this.mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file/up").file("file", "文件内容".getBytes()));} catch (Exception e) {e.printStackTrace();}
步骤:(1)首先创建MockMvc对象
(2)调用MockMvc中的方法perform(RequestBuilder requestBuilder),该方法接收一个RequestBuilder对象。通过查看源码,spring推荐我们使用MockMvcRequestBuilders:
该类有着丰富的http请求方法,比如get、post等,其中有fileUpload()方法用于文件上传。
fileUpload()参数表示文件上传的url地址,再调用file(String name,byte[] content)方法选择上传的文件,第一个参数表示请求的key,第二个参数表示文件的内容。这里接收的是一个byte类型的数组,但是并没有设置文件名的地方,查看源码可知,file()方法内部调用了MockMultipartFile类的构造函数,默认的文件名是 “ ”:
但是文件名在哪写呢?第一个方法就是在Controller中的multipartFile.transferTo(new File(file, "fileName"));写上文件名,例如fileName.很明显这样做是不合适的,毕竟上传的文件名不可能写死。第二种方法就是使用file()方法的另外一个重载方法
该方法接收一个MockMultipartFile的对象,该类有很多重载的构造函数:
3.2 通过io流上传
更换file()方法,测试方法修改为: @Test public void test() {try {InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("spring-mvc.xml");ResultActions contentAsString = this.mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file/up").file(new MockMultipartFile("file","spring-mvc.xml","text/html",resourceAsStream)));} catch (Exception e) {e.printStackTrace();}}
通过使用file()的重载方法,我们可以指定方法名,以及通过io流上传文件。构造方法如下:
从源码注释可以很清楚看到:name表示参数接收的key,originalFilename代表文件名,contentType表示文件类型,contentStream表示文件输入流。
这样,在Controller方法中,我们可以修改为
multipartFile.transferTo(new File(file, multipartFile.getOriginalFilename()));通过上面两种方法运行之后,就会在D:\files文件夹下知道上传的文件。
阅读全文
1 0
- Spring Test之文件上传篇
- spring test---restful与文件上传
- Spring之上传文件
- Spring MVC之文件上传
- spring boot之文件上传
- Spring mvc系列七之 文件上传
- Spring mvc系列七之 文件上传
- java spring mvc之文件上传
- Spring MVC之文件上传与下载
- spring mvc的文件上传之优化
- Junit 测试之 Spring Test
- spring实现文件上传
- Spring 文件上传
- spring上传文件
- Spring MultipartResolver文件上传
- spring mvc 文件上传
- Spring 文件上传
- spring 多文件上传
- 基于docker的CI/CD
- 第一次写博客。。。
- 爬虫大主宰
- 参考内核块设备驱动写:z2ram.c在内存中开辟一块空间来模拟成块设备
- Xcode如何打包ipa安装包
- Spring Test之文件上传篇
- 并发框架Disruptor
- 【04】vue.js — 百度搜索数据案例
- 第二课 Python爬虫网络请求request模块详解
- Eclipse背景颜色修改
- 中文翻译The Django Book
- spring cloud config整合gitlab搭建分布式的配置中心
- python多线程
- Palindrome Number
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
嘉定成人学校
嘉定上海大学
嘉定修打印机
嘉定妇幼医院
上海嘉定牙防所
嘉定区马陆镇医院
嘉定新城新房
上海嘉定区有哪些医院
上海嘉定买房
嘉定城区医院
上海嘉定家具城
上海嘉定写字楼
嘉定创业园区
嘉定精锐教育
上海嘉定电大
上海嘉定马陆驾校
上海嘉定殡仪馆
上海嘉定电子厂
嘉定南翔房产
嘉定康复医院
上海嘉定怎么样
上海嘉定中心医院电话
嘉定嘉华医院
嘉定人事上岗证培训
上海嘉定哪里好玩
上海嘉定的医院
嘉定嘉华医院地址
上海大学嘉定
嘉定学大教育
上海嘉定旅行社
嘉定经济开发区
嘉定区的医院
上海嘉定房地产
上海嘉定出租车电话
上海嘉定家具厂
明发嘉定中心
嘉定淮海国际广场
上海嘉定酒吧
嘉定快餐公司
上海嘉定开放大学
嘉定劳务派遣公司