• 单元测试上传文件


    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());
    }*/
    }
    }



  • 相关阅读:
    (BFS 二叉树) leetcode 515. Find Largest Value in Each Tree Row
    (二叉树 BFS) leetcode513. Find Bottom Left Tree Value
    (二叉树 BFS DFS) leetcode 104. Maximum Depth of Binary Tree
    (二叉树 BFS DFS) leetcode 111. Minimum Depth of Binary Tree
    (BFS) leetcode 690. Employee Importance
    (BFS/DFS) leetcode 200. Number of Islands
    (最长回文子串 线性DP) 51nod 1088 最长回文子串
    (链表 importance) leetcode 2. Add Two Numbers
    (链表 set) leetcode 817. Linked List Components
    (链表 双指针) leetcode 142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/fuqiang-zhou/p/14375720.html
Copyright © 2020-2023  润新知