package com.mindskip.xzs.controller.admin;
|
|
|
import cn.hutool.core.codec.Base64;
|
import com.mindskip.xzs.base.BaseApiController;
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.service.ExcelImportService;
|
import com.mindskip.xzs.service.FileUpload;
|
import com.mindskip.xzs.viewmodel.admin.file.UeditorConfigVM;
|
import com.mindskip.xzs.viewmodel.admin.file.UploadResultVM;
|
import lombok.AllArgsConstructor;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.UUID;
|
|
|
/**
|
* @version 2.2.0
|
* @description: 上传
|
* Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司
|
* @date 2021 /9/7 9:45
|
*/
|
@AllArgsConstructor
|
@RequestMapping("/api/admin/upload")
|
@RestController("AdminUploadController")
|
public class UploadController extends BaseApiController {
|
|
private final FileUpload fileUpload;
|
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);
|
private static final String SCRAWL_UPLOAD = "scrawlUpload";
|
private static final String SCRAWL_FIELD_NAME = "scrawl";
|
private static final String IMAGE_UPLOAD = "imgUpload";
|
private static final String IMAGE_UPLOAD_FILE = "upFile";
|
private static final String STATE = "SUCCESS";
|
private final ExcelImportService excelImportService;
|
|
/**
|
* 图片上传
|
*
|
* @param request the request
|
* @return the object
|
*/
|
@ResponseBody
|
@RequestMapping("/configAndUpload")
|
public Object upload(HttpServletRequest request) {
|
String action = request.getParameter("action");
|
if (null == action)
|
return null;
|
String filePath = null;
|
switch (action) {
|
case IMAGE_UPLOAD:
|
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
|
MultipartFile multipartFile = multipartHttpServletRequest.getFile(IMAGE_UPLOAD_FILE);
|
String fileName = multipartFile.getOriginalFilename();
|
long attachSize = multipartFile.getSize();
|
try (InputStream inputStream = multipartFile.getInputStream()) {
|
filePath = fileUpload.fileUpload(inputStream, attachSize, fileName, "image");
|
} catch (IOException e) {
|
logger.error(e.getMessage(), e);
|
}
|
return new UploadResultVM(fileName, fileName, filePath, multipartFile.getSize(), fileName, STATE);
|
case SCRAWL_UPLOAD:
|
String imageBase64 = request.getParameter(SCRAWL_FIELD_NAME);
|
String uuidName = UUID.randomUUID().toString();
|
try {
|
File file = File.createTempFile(uuidName, ".png");
|
try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
|
byte[] buff = Base64.decode(imageBase64);
|
fileOutputStream.write(buff);
|
filePath = fileUpload.fileUpload(file, uuidName + ".png", "latex");
|
}
|
} catch (IOException e) {
|
logger.error(e.getMessage(), e);
|
}
|
return new UploadResultVM(filePath, STATE);
|
default:
|
return new UeditorConfigVM(SCRAWL_UPLOAD, SCRAWL_FIELD_NAME, IMAGE_UPLOAD, IMAGE_UPLOAD_FILE);
|
}
|
}
|
|
|
/**
|
* excel题目导入
|
*
|
* @param request the request
|
* @return the rest response
|
*/
|
@RequestMapping("/excel")
|
@ResponseBody
|
public RestResponse excel(HttpServletRequest request) {
|
MultipartFile file = ((MultipartHttpServletRequest) request).getFile("file");
|
String excelTempPath = null;
|
try (InputStream inputStream = file.getInputStream()) {
|
excelTempPath = File.createTempFile(UUID.randomUUID().toString(), ".xlsx").getAbsolutePath();
|
excelImportService.adminQuestionImport(inputStream, excelTempPath, getCurrentUser());
|
} catch (IOException e) {
|
logger.error(e.getMessage(), "文件上传失败");
|
}
|
String filePath = fileUpload.fileUpload(new File(excelTempPath), "题目导入结果.xlsx", "excel");
|
return RestResponse.ok(filePath);
|
}
|
|
|
/**
|
* File rest response.
|
*
|
* @param request the request
|
* @return the rest response
|
*/
|
@RequestMapping("/file")
|
@ResponseBody
|
public RestResponse file(HttpServletRequest request) {
|
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
|
MultipartFile multipartFile = multipartHttpServletRequest.getFile("file");
|
String fileName = multipartFile.getOriginalFilename();
|
long fileSize = multipartFile.getSize();
|
String filePath = null;
|
String folder = request.getParameter("folder");
|
try (InputStream inputStream = multipartFile.getInputStream()) {
|
filePath = fileUpload.fileUpload(inputStream, fileSize, fileName, folder);
|
} catch (IOException e) {
|
logger.error(e.getMessage(), e);
|
return RestResponse.fail(2, "文件上传失败");
|
}
|
return RestResponse.ok(filePath);
|
}
|
|
}
|