Commit 682f9c560f23f81636f18c14196dc939ab7d3aff

Authored by jiangyong
1 parent e2c3879a

增加验证传参方式接口

assistant-dfs/src/main/java/com/diligrp/assistant/dfs/controller/FileObjectController.java
... ... @@ -8,6 +8,8 @@ import com.diligrp.assistant.dfs.domain.FileMetadata;
8 8 import com.diligrp.assistant.dfs.exception.DfsServiceException;
9 9 import com.diligrp.assistant.dfs.service.FileRepositoryService;
10 10 import com.diligrp.assistant.shared.ErrorCode;
  11 +import com.diligrp.assistant.shared.domain.AmisMessage;
  12 +import com.diligrp.assistant.shared.domain.AmisUploadResponse;
11 13 import com.diligrp.assistant.shared.domain.Message;
12 14 import com.diligrp.assistant.shared.util.ObjectUtils;
13 15 import jakarta.annotation.Resource;
... ... @@ -55,6 +57,23 @@ public class FileObjectController {
55 57 return Message.success(fileId);
56 58 }
57 59  
  60 + @RequestMapping(value = "/amis/file/upload.do")
  61 + public AmisMessage<AmisUploadResponse> amisFileUpload(@RequestPart("file") MultipartFile file,
  62 + @RequestParam(Constants.HEADER_AUTHORIZATION) String authorization) throws IOException {
  63 + DfsAccessToken accessToken = accessAuthorization(authorization);
  64 +
  65 + Optional<MediaType> optional = MediaTypeFactory.getMediaType(file.getOriginalFilename());
  66 + MimeType mimeType = optional.orElse(MediaType.APPLICATION_OCTET_STREAM);
  67 + FileMetadata metadata = new FileMetadata(mimeType.toString());
  68 +
  69 + String fileName = ObjectUtils.isNotEmpty(file.getOriginalFilename()) ? file.getOriginalFilename() : "unknown";
  70 + DfsFile fileObject = new DfsFile(fileName, file.getInputStream(), metadata);
  71 + String fileId = fileRepositoryService.uploadFile(accessToken, fileObject);
  72 + AmisUploadResponse response = new AmisUploadResponse();
  73 + response.setUrl(fileId);
  74 + return AmisMessage.success(response);
  75 + }
  76 +
58 77 @RequestMapping(value = "/files/upload.do")
59 78 public Message<?> fileUploads(@RequestPart(value = "files") MultipartFile[] files,
60 79 @RequestHeader(Constants.HEADER_AUTHORIZATION) String authorization) throws IOException {
... ... @@ -127,7 +146,26 @@ public class FileObjectController {
127 146 }
128 147 response.flushBuffer();
129 148 }
130   -
  149 + @RequestMapping(value = "/amis/file/download.do")
  150 + public void amisDownload(@RequestParam("fileId") String fileId, @RequestParam("Dfs-Authorization") String authorization,
  151 + HttpServletResponse response) throws IOException {
  152 + DfsAccessToken accessToken = accessAuthorization(authorization);
  153 + DfsFile file = fileRepositoryService.downloadFile(accessToken, fileId, null);
  154 + InputStream fileStream = file.getStream();
  155 + response.setContentType(file.getMetadata().getMimeType());
  156 + // oss sdk存在bug, fileStream.available()和真实字节数存在差异
  157 + // response.setContentLength(fileStream.available());
  158 + System.out.println(file.getName());
  159 + String fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8);
  160 + System.out.println(URLDecoder.decode(fileName, StandardCharsets.UTF_8));
  161 + response.addHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName);
  162 + try {
  163 + IOUtils.copy(fileStream, response.getOutputStream());
  164 + } finally {
  165 + IOUtils.closeQuietly(fileStream);
  166 + }
  167 + response.flushBuffer();
  168 + }
131 169 @RequestMapping(value = "/file/delete.do")
132 170 public Message<?> deleteFile(@RequestParam("fileId") String fileId, @RequestHeader(Constants.HEADER_AUTHORIZATION) String authorization) {
133 171 DfsAccessToken accessToken = accessAuthorization(authorization);
... ...
assistant-shared/src/main/java/com/diligrp/assistant/shared/domain/AmisMessage.java 0 → 100644
  1 +package com.diligrp.assistant.shared.domain;
  2 +
  3 +import com.diligrp.assistant.shared.ErrorCode;
  4 +
  5 +/**
  6 + * @author jy
  7 + */
  8 +public class AmisMessage<T> {
  9 + protected static final int CODE_SUCCESS = 0;
  10 + protected static final int CODE_FAILURE = ErrorCode.SYSTEM_UNKNOWN_ERROR;
  11 + protected static final String MSG_SUCCESS = "success";
  12 + private Integer status;
  13 + private String msg;
  14 + private T data;
  15 + public AmisMessage() {
  16 + }
  17 +
  18 + public Integer getStatus() {
  19 + return status;
  20 + }
  21 +
  22 + public void setStatus(Integer status) {
  23 + this.status = status;
  24 + }
  25 +
  26 + public String getMsg() {
  27 + return msg;
  28 + }
  29 +
  30 + public void setMsg(String msg) {
  31 + this.msg = msg;
  32 + }
  33 +
  34 + public T getData() {
  35 + return this.data;
  36 + }
  37 +
  38 + public void setData(T data) {
  39 + this.data = data;
  40 + }
  41 +
  42 + public static AmisMessage<?> success() {
  43 + AmisMessage<?> result = new AmisMessage();
  44 + result.status = 0;
  45 + result.msg = "success";
  46 + return result;
  47 + }
  48 +
  49 + public static <E> AmisMessage<E> success(E data) {
  50 + AmisMessage<E> result = new AmisMessage();
  51 + result.status = 0;
  52 + result.data = data;
  53 + result.msg = "success";
  54 + return result;
  55 + }
  56 +
  57 + public static AmisMessage<?> failure(String message) {
  58 + AmisMessage<?> result = new AmisMessage();
  59 + result.status = 1000;
  60 + result.msg = message;
  61 + return result;
  62 + }
  63 +
  64 + public static AmisMessage<?> failure(int code, String message) {
  65 + AmisMessage<?> result = new AmisMessage();
  66 + result.status = code;
  67 + result.msg = message;
  68 + return result;
  69 + }
  70 +}
... ...
assistant-shared/src/main/java/com/diligrp/assistant/shared/domain/AmisUploadResponse.java 0 → 100644
  1 +package com.diligrp.assistant.shared.domain;
  2 +
  3 +/**
  4 + * @author jy
  5 + */
  6 +public class AmisUploadResponse {
  7 + private String value;
  8 + private String filename;
  9 + private String url;
  10 +
  11 + public String getValue() {
  12 + return value;
  13 + }
  14 +
  15 + public void setValue(String value) {
  16 + this.value = value;
  17 + }
  18 +
  19 + public String getFilename() {
  20 + return filename;
  21 + }
  22 +
  23 + public void setFilename(String filename) {
  24 + this.filename = filename;
  25 + }
  26 +
  27 + public String getUrl() {
  28 + return url;
  29 + }
  30 +
  31 + public void setUrl(String url) {
  32 + this.url = url;
  33 + }
  34 +}
... ...