springBoot项目中文件上传下载
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.*;
import java.util.Date;
@RestController
@RequestMapping("/file")
public class FileController {
@PostMapping()
public FileInfo upload(MultipartFile file) throws IOException {
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
System.out.println(file.getSize());
String folder = "C:\\Users\\gsc\\Desktop\\项目搭建\\security-project";
File localFile = new File(folder,new Date().getTime()+".txt");
file.transferTo(localFile);
return new FileInfo(localFile.getAbsolutePath());
}
@GetMapping("/{id}")
public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response){
InputStream inputStream = null;
OutputStream outputStream = null;
try{
String folder = "C:\\Users\\gsc\\Desktop\\项目搭建\\security-project";
inputStream = new FileInputStream(new File(folder,id + ".txt"));
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){
e.printStackTrace();
}finally {
if(inputStream != null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上传测试:
// 上传
@Test
public void whenUploadSuccess() throws Exception {
mockMvc.perform(fileUpload("/file")
.file(new MockMultipartFile("file","test.txt","multipart/form-data","hello upload".getBytes("UTF-8"))))
.andExpect(MockMvcResultMatchers.status().isOk());
}
下载测试:
http://localhost:8060/file/1242354345