Spring Boot 上传下载


import java.io.BufferedInputStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.zscloud.auth.server.model.FileUpload;
import com.zscloud.auth.server.utils.Constants;
import com.zscloud.core.controller.BaseController;

@RestController
@RequestMapping(path = "/fileUpload")
public class FileUploadController extends BaseController {

private static Logger logger = LoggerFactory.getLogger(FileUploadController.class);

/**
* 上传

* @param file
* @return
*/
@RequestMapping(value = "/upload", headers = "content-type=multipart/*", method = RequestMethod.POST)
@ResponseBody
public FileUpload upload(@RequestParam("file") MultipartFile file) {
FileUpload fileUpload = new FileUpload();
if (file.isEmpty()) {
fileUpload.setCode(0);
fileUpload.setMsg("文件为空");
}
String fileName = file.getOriginalFilename();
logger.info("文件名:" + fileName);
String suffixName = fileName.substring(fileName.lastIndexOf("."));
logger.info("后缀:" + suffixName);
String filePath = Constants.TEMP_DIRECTORY;
fileName = UUID.randomUUID() + "";
File dest = new File(filePath + fileName + suffixName);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
fileUpload.setCode(1);
fileUpload.setFilePath(fileName + suffixName);
fileUpload.setMsg("上传成功");
return fileUpload;
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
fileUpload.setCode(2);
fileUpload.setMsg("上传失败");
return fileUpload;
}

/**
* 下载

* @param request
* @param response
* @param fileUpload
* @return
*/
@RequestMapping(value = "/download", method = RequestMethod.POST)
public String downloadFile(org.apache.catalina.servlet4preview.http.HttpServletRequest request,
HttpServletResponse response, @RequestBody FileUpload fileUpload) {
String fileName = fileUpload.getFileName();
if (fileName != null) {
File file = new File(Constants.TEMP_DIRECTORY, fileUpload.getFilePath());
if (file.exists()) {
response.setContentType("application/force-download");
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
logger.info("下载成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
return null;
}

}



public class FileUpload {


/**
* 主键
*/
private Long id;


/**
* 文件名
*/
private String fileName;


/**
* 文件后缀名
*/
private String suffixName;


/**
* 文件路径
*/
private String filePath;


/**
* 编码
*/
private int code;


/**
* 消息
*/
private String msg;


public FileUpload() {
super();
}


public FileUpload(Long id, String fileName, String suffixName, String filePath, int code, String msg) {
super();
this.id = id;
this.fileName = fileName;
this.suffixName = suffixName;
this.filePath = filePath;
this.code = code;
this.msg = msg;
}


public Long getId() {
return id;
}


public void setId(Long id) {
this.id = id;
}


public String getFileName() {
return fileName;
}


public void setFileName(String fileName) {
this.fileName = fileName;
}


public String getSuffixName() {
return suffixName;
}


public void setSuffixName(String suffixName) {
this.suffixName = suffixName;
}


public String getFilePath() {
return filePath;
}


public void setFilePath(String filePath) {
this.filePath = filePath;
}


public int getCode() {
return code;
}


public void setCode(int code) {
this.code = code;
}


public String getMsg() {
return msg;
}


public void setMsg(String msg) {
this.msg = msg;
}


}

猜你喜欢

转载自blog.csdn.net/daqiang012/article/details/80266064