package com.ruoyi.other.controller;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
import com.ruoyi.other.service.TempFileService;
|
import com.ruoyi.purchase.dto.ProductRecordDto;
|
import com.ruoyi.purchase.dto.TicketRegistrationDto;
|
import com.ruoyi.purchase.service.ITicketRegistrationService;
|
import com.ruoyi.purchase.service.impl.TicketRegistrationServiceImpl;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.AllArgsConstructor;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.nio.file.Files;
|
import java.nio.file.Path;
|
import java.nio.file.Paths;
|
|
|
@RestController
|
@RequestMapping("/file")
|
@AllArgsConstructor
|
public class TempFileController {
|
|
private TempFileService tempFileService;
|
|
private TicketRegistrationServiceImpl ticketRegistrationServiceImpl;
|
|
@PostMapping("/upload")
|
public AjaxResult uploadFile(MultipartFile file, Integer type) {
|
try {
|
return AjaxResult.success(tempFileService.uploadFile(file, type));
|
} catch (Exception e) {
|
return AjaxResult.error(e.getMessage());
|
}
|
}
|
|
@PostMapping("uploadFile")
|
public AjaxResult uploadFile(@RequestBody ProductRecordDto productRecordDto) {
|
try {
|
if (!productRecordDto.getTempFileIds().isEmpty()&&productRecordDto.getTicketRegistrationId() != null) {
|
ticketRegistrationServiceImpl.migrateTempFilesToFormal(productRecordDto.getTicketRegistrationId(), productRecordDto.getTempFileIds());
|
}
|
} catch (Exception e) {
|
return AjaxResult.error(e.getMessage());
|
}
|
return AjaxResult.success();
|
}
|
|
/**
|
* 图片预览(根据磁盘路径)
|
*/
|
@GetMapping("/preview")
|
@ApiOperation(value = "图片预览")
|
public void previewImage(String url, HttpServletResponse response) {
|
if (!StringUtils.hasText(url)) {
|
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
return;
|
}
|
try {
|
Path filePath = Paths.get(url);
|
if (!Files.exists(filePath) || !Files.isRegularFile(filePath)) {
|
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
return;
|
}
|
String filename = filePath.getFileName().toString();
|
String ext = filename.contains(".") ? filename.substring(filename.lastIndexOf('.') + 1).toLowerCase() : "";
|
MediaType mediaType;
|
switch (ext) {
|
case "png":
|
mediaType = MediaType.IMAGE_PNG;
|
break;
|
case "gif":
|
mediaType = MediaType.IMAGE_GIF;
|
break;
|
case "bmp":
|
mediaType = MediaType.parseMediaType("image/bmp");
|
break;
|
case "webp":
|
mediaType = MediaType.parseMediaType("image/webp");
|
break;
|
case "jpg":
|
case "jpeg":
|
mediaType = MediaType.IMAGE_JPEG;
|
break;
|
default:
|
mediaType = MediaType.APPLICATION_OCTET_STREAM;
|
}
|
response.setContentType(mediaType.toString());
|
response.setHeader(HttpHeaders.CACHE_CONTROL, "max-age=3600");
|
Files.copy(filePath, response.getOutputStream());
|
} catch (IOException e) {
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
}
|
}
|
|
}
|