Common-io 文件处理工具包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
测试模拟
@Test
public void whenUploadSuccess() throws Exception {
mockMvc.perform(fileUpload("/file").file(
new MockMultipartFile(
"file","test.txt",
"multipart/form-data","helloowrd".getBytes())
)).andExpect(status().isOk());
}
上传下载
import com.imooc.dto.FileInfo;
import org.apache.commons.io.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 {
String floder = "D:\\IdeaWorkspace\\imooc-security\\imooc-security-demo\\src\\main\\java\\com\\imooc\\web\\controller";
@PostMapping
public FileInfo upload(MultipartFile file) throws IOException {
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
System.out.println(file.getSize());
File localFile = new File(floder, System.currentTimeMillis() + ".txt");
file.transferTo(localFile);
return new FileInfo(localFile.getAbsolutePath());
}
@GetMapping("/{id}")
public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) {
try (
InputStream inputStream = new FileInputStream(new File(floder, id + ".txt"));
OutputStream outputStream = response.getOutputStream();
) {
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename=test.txt");
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (Exception e) {
}
}
}