zoukankan      html  css  js  c++  java
  • 单元测试上传文件

    package com.zfq.springcloud.controller;

    import org.apache.tomcat.util.http.fileupload.IOUtils;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;

    @RestController
    @RequestMapping("/file")
    public class FileController {

    /**
    * 处理文件上传
    * @param file
    */
    @PostMapping("/upload")
    public String upload(@RequestPart(name = "file") MultipartFile file){
    File localfile = new File("D:/file/name/1.jpg");
    try {
    //将文件上传到本地路径
    file.transferTo(localfile);
    } catch (IOException e) {
    e.printStackTrace();
    }
    String fileInfo = "";
    fileInfo += file.getName()+file.getOriginalFilename()+file.getContentType();
    return fileInfo;
    }

    /**
    * 文件的下载
    * @param id
    * @param request
    * @param response
    */
    @GetMapping("/{id}")
    public void download(@PathVariable String id , HttpServletRequest request, HttpServletResponse response){
    try (InputStream inputStream = new FileInputStream(new File("/root/file/name"));
    OutputStream outputStream = response.getOutputStream();
    ){
    response.setContentType("application/x-download");
    //指定文件的名称
    response.addHeader("Content-Disposition","attachment;filename=test.txt");
    IOUtils.copy(inputStream,outputStream);
    outputStream.flush();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }








    package com.zfq.springcloud.controller;

    import org.junit.Before;
    import org.junit.jupiter.api.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.http.MediaType;
    import org.springframework.mock.web.MockMultipartFile;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.ResultActions;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;

    import java.io.File;
    import java.io.FileInputStream;
    import java.nio.charset.StandardCharsets;

    import static org.junit.jupiter.api.Assertions.*;
    import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class FileControllerTest {

    @Test
    public void contextLoads() {
    }

    @Autowired
    private WebApplicationContext wac;

    /* private MockMvc mockMvc;

    *//**
    * 在每次测试执行前构建mvc环境
    *//*
    @Before
    public void setup() {
    mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }*/
    /**
    * 测试上传文件
    */
    /* @Test
    public void whenUploadFileSuccess() {
    try {
    String result = mockMvc.perform(
    MockMvcRequestBuilders
    .fileUpload("/file")
    .file(
    new MockMultipartFile("file", "test.txt", ",multipart/form-data", "hello upload".getBytes("UTF-8"))
    )
    ).andExpect(MockMvcResultMatchers.status().isOk())
    .andReturn().getResponse().getContentAsString();
    System.out.println(result);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }*/

    @Test
    public void uploadFile() throws Exception {
    MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();

    String filePath = this.getClass().getResource("/1.jpg").getPath();
    File file = new File(filePath);
    MockMultipartFile mockMultipartFile = new MockMultipartFile("file", //文件名
    file.getName(), //originalName 相当于上传文件在客户机上的文件名
    MediaType.IMAGE_JPEG_VALUE, //文件类型
    new FileInputStream(file) //文件流
    );
    ResultActions resultActions = mockMvc.perform(MockMvcRequestBuilders.multipart("/file/upload").file(mockMultipartFile));
    String contentAsString =
    resultActions.andExpect(MockMvcResultMatchers.status().isOk()).andReturn().getResponse()
    .getContentAsString();
    System.out.println(contentAsString);
    resultActions.andDo(print());

    //String filePath = this.getClass().getResource("D:\Hzero\cloud2020\cloud-consumer-order80\src\test\resource\1.jpg").getPath();
    /* File file = new File("D:\Hzero\cloud2020\cloud-consumer-order80\src\test\resource\1.jpg");
    MockMultipartFile firstFile = new MockMultipartFile("file", "2.xlsx",
    MediaType.IMAGE_JPEG_VALUE, new FileInputStream(file));
    mockMvc.perform(MockMvcRequestBuilders.multipart("/file/upload").file(firstFile)
    .contentType(MediaType.MULTIPART_FORM_DATA_VALUE))
    .andExpect(MockMvcResultMatchers.status().isOk()).andDo(print());
    }*/
    }
    }



  • 相关阅读:
    UITextField editingDidEnd 不调用(不响应)
    修改 Navigation Bar 返回按钮文字和图片
    HTTPS抓包
    brew 基本使用方法
    Linux基本命令
    AR 初探
    汇编学习
    ios GCD ---- (1)
    axios导出或者下载
    Vue绑定图片src出现的问题
  • 原文地址:https://www.cnblogs.com/fuqiang-zhou/p/14375720.html
Copyright © 2011-2022 走看看