package com.lf.server.controller.all;
|
|
import com.lf.server.aspect.SysLog;
|
import com.lf.server.entity.all.ResponseMsg;
|
import com.lf.server.helper.FileHelper;
|
import com.lf.server.service.all.FileService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.net.URLEncoder;
|
import java.util.Iterator;
|
|
/**
|
* 文件控制器
|
* @author WWW
|
*/
|
@Api(tags = "运维管理\\文件管理")
|
@RestController
|
@RequestMapping("/file")
|
public class FileController extends BaseController {
|
@Autowired
|
private FileService fileService;
|
|
@SysLog()
|
@ApiOperation(value = "文件上传")
|
@PostMapping(value = "/upload")
|
public ResponseMsg<String> upload(@RequestBody MultipartFile[] files, String tab, HttpServletRequest req, HttpServletResponse res) {
|
try {
|
MultipartHttpServletRequest mreq = (MultipartHttpServletRequest) req;
|
Iterator<String> fileNames = mreq.getFileNames();
|
|
// 获取原文件名
|
// noinspection AlibabaLowerCamelCaseVariableNaming
|
String OriginalFileName = files[0].getOriginalFilename();
|
// 获取文件后缀名
|
String suffixName = OriginalFileName.substring(OriginalFileName.lastIndexOf("."));
|
|
String fileName = null;
|
MultipartFile file = null;
|
while (fileNames.hasNext()) {
|
fileName = (String) fileNames.next();
|
file = mreq.getFile(fileName);
|
}
|
|
// kb
|
long size = file.getSize();
|
file.transferTo(new File(""));
|
|
return success("");
|
} catch (Exception ex) {
|
return fail(ex.getMessage(), null);
|
}
|
}
|
|
@SysLog()
|
@ApiOperation(value = "下载文件")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "guid", value = "文件GUID", dataType = "String", paramType = "query", example = "")
|
})
|
@GetMapping("/download")
|
public void download(String guid, HttpServletRequest req, HttpServletResponse res) {
|
try {
|
String filePath = "";
|
|
// 创建文件对象
|
File file = new File(filePath);
|
if (!file.exists()) {
|
return;
|
}
|
|
String fileName = URLEncoder.encode("学生名册.pdf", "UTF-8");
|
|
// 设置响应头中文件的下载方式为附件方式,以及设置文件名
|
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
|
|
// 定义输入流,通过输入流读取文件内容
|
FileInputStream fileInputStream = new FileInputStream(file);
|
|
// 通过response对象,获取到输出流
|
ServletOutputStream outputStream = res.getOutputStream();
|
|
// 设置响应头的编码格式为UTF-8
|
res.setCharacterEncoding("UTF-8");
|
|
// 通过response对象设置响应数据格式("text/plain; charset=utf-8")
|
String ext = FileHelper.getExtension(file);
|
String mime = FileHelper.getMime(ext);
|
res.setContentType(mime);
|
|
// 记录下载记录...
|
|
int len = 0;
|
byte[] bytes = new byte[1024];
|
while ((len = fileInputStream.read(bytes)) != -1) {
|
// 通过输入流读取文件数据,然后通过上述的输出流写回浏览器
|
outputStream.write(bytes, 0, len);
|
// 刷新
|
outputStream.flush();
|
}
|
|
// 关闭资源
|
outputStream.close();
|
fileInputStream.close();
|
} catch (Exception ex) {
|
log.error(ex.getMessage() + ex.getStackTrace() + "\n");
|
}
|
}
|
}
|