package com.example.springboot.controller;
import com.example.springboot.entity.FileInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.nio.ch.IOUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 文件上传下载
*/
@Slf4j
@RestController
@RequestMapping("/file")
public class FileController {
private String dizhi="D:\\My_Java\\anli\\springboot\\src\\main\\java\\com\\example\\springboot\\controller";
/**
* 上传
*
* postman测试
* http://localhost:8083/file
* body form-data
* key: value:
* @param file
* @return
*/
@PostMapping
public FileInfo upload(MultipartFile file) throws Exception{
System.out.println(file.getName());
System.out.println(file.getOriginalFilename());
System.out.println(file.getSize());
File bendiFile = new File(dizhi,System.currentTimeMillis()+".txt");
//把传上来的文件写到本地文件
file.transferTo(bendiFile);
//绝对路径
return new FileInfo(bendiFile.getAbsolutePath());
}
/**
* 下载
* http://localhost:8083/file/1546167484107
*/
@GetMapping("/{id}")
public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response)
{
try(
//读文件
InputStream inputStream = new FileInputStream(new File(dizhi,id+".txt"));
//写
OutputStream outputStream =response.getOutputStream();
) {
response.setContentType("application/x-download");
response.addHeader("Contend-Disposition","attachment;filename=test.txt");
//copy
IOUtils.copy(inputStream,outputStream);
outputStream.flush();
}catch (Exception e){
}
}
}
springboot文件上传下载
最新推荐文章于 2024-05-12 06:59:17 发布