文件上传,下载异步
This commit is contained in:
parent
3e1d92668a
commit
47afaba8cd
@ -27,6 +27,7 @@ import springfox.documentation.spring.web.DocumentationCache;
|
|||||||
import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper;
|
import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -46,7 +47,11 @@ public class DefaultBaseController {
|
|||||||
|
|
||||||
protected static final Logger LOG = LoggerFactory.getLogger(DefaultBaseController.class);
|
protected static final Logger LOG = LoggerFactory.getLogger(DefaultBaseController.class);
|
||||||
@Autowired
|
@Autowired
|
||||||
private HttpSession httpSession;
|
protected HttpSession httpSession;
|
||||||
|
@Autowired
|
||||||
|
protected HttpServletRequest httpServletRequest;
|
||||||
|
@Autowired
|
||||||
|
protected HttpServletResponse httpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取请求参数
|
* 获取请求参数
|
||||||
|
@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -36,7 +38,11 @@ public class DefaultBaseService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected SecurityComponent securityComponent;
|
protected SecurityComponent securityComponent;
|
||||||
@Autowired
|
@Autowired
|
||||||
private HttpSession httpSession;
|
protected HttpSession httpSession;
|
||||||
|
@Autowired
|
||||||
|
protected HttpServletRequest httpServletRequest;
|
||||||
|
@Autowired
|
||||||
|
protected HttpServletResponse httpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置新增基础数据
|
* 设置新增基础数据
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ink.wgink.login.app.controller.api.appsign;
|
package ink.wgink.login.app.controller.app.api.appsign;
|
||||||
|
|
||||||
import ink.wgink.annotation.CheckRequestBodyAnnotation;
|
import ink.wgink.annotation.CheckRequestBodyAnnotation;
|
||||||
|
import ink.wgink.common.base.DefaultBaseController;
|
||||||
import ink.wgink.exceptions.ParamsException;
|
import ink.wgink.exceptions.ParamsException;
|
||||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||||
import ink.wgink.login.app.pojo.vos.appsign.AppLoginDefaultVO;
|
import ink.wgink.login.app.pojo.vos.appsign.AppLoginDefaultVO;
|
||||||
@ -19,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
* 当你想要放弃的时候,想想当初你为何开始
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
@ -32,7 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
@Api(tags = ISystemConstant.API_TAGS_APP_PREFIX + "登录")
|
@Api(tags = ISystemConstant.API_TAGS_APP_PREFIX + "登录")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping(ISystemConstant.APP_PREFIX + "/sign")
|
@RequestMapping(ISystemConstant.APP_PREFIX + "/sign")
|
||||||
public class AppSignController {
|
public class AppSignAppController extends DefaultBaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAppSignService appSignService;
|
private IAppSignService appSignService;
|
@ -17,12 +17,14 @@ import io.swagger.annotations.*;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName: FileController
|
* @ClassName: FileController
|
||||||
@ -79,9 +81,9 @@ public class FileController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadfile")
|
@PostMapping("uploadfile")
|
||||||
public SuccessResultData<String> uploadFile(@RequestParam("file") MultipartFile file) {
|
public Callable<SuccessResultData<String>> uploadFile(@RequestParam("file") MultipartFile file) {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(file, UploadTypeEnum.FILE, params);
|
return asyncUploadSingle(file, UploadTypeEnum.FILE, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
||||||
@ -90,9 +92,9 @@ public class FileController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadimage")
|
@PostMapping("uploadimage")
|
||||||
public SuccessResultData<String> uploadImage(@RequestParam("image") MultipartFile image) {
|
public Callable<SuccessResultData<String>> uploadImage(@RequestParam("image") MultipartFile image) {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(image, UploadTypeEnum.IMAGE, params);
|
return asyncUploadSingle(image, UploadTypeEnum.IMAGE, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
||||||
@ -101,12 +103,12 @@ public class FileController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadvideo")
|
@PostMapping("uploadvideo")
|
||||||
public SuccessResultData<String> uploadVideo(@RequestParam("video") MultipartFile video) {
|
public Callable<SuccessResultData<String>> uploadVideo(@RequestParam("video") MultipartFile video) {
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getBackend() != null) {
|
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getBackend() != null) {
|
||||||
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getBackend().getVideo());
|
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getBackend().getVideo());
|
||||||
}
|
}
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(video, UploadTypeEnum.VIDEO, params);
|
return asyncUploadSingle(video, UploadTypeEnum.VIDEO, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传音频", notes = "上传音频接口")
|
@ApiOperation(value = "上传音频", notes = "上传音频接口")
|
||||||
@ -115,12 +117,12 @@ public class FileController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadaudio")
|
@PostMapping("uploadaudio")
|
||||||
public SuccessResultData<String> uploadAudio(@RequestParam("audio") MultipartFile audio) {
|
public Callable<SuccessResultData<String>> uploadAudio(@RequestParam("audio") MultipartFile audio) {
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getBackend() != null) {
|
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getBackend() != null) {
|
||||||
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getBackend().getAudio());
|
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getBackend().getAudio());
|
||||||
}
|
}
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(audio, UploadTypeEnum.AUDIO, params);
|
return asyncUploadSingle(audio, UploadTypeEnum.AUDIO, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "文件列表", notes = "文件列表接口")
|
@ApiOperation(value = "文件列表", notes = "文件列表接口")
|
||||||
@ -142,7 +144,19 @@ public class FileController extends DefaultBaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SuccessResultData<String> uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
private SuccessResultData<String> uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
||||||
return fileService.uploadSingle(uploadFile, uploadTypeEnum, params);
|
return new SuccessResultData<>(fileService.uploadSingle(uploadFile, uploadTypeEnum, params));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步上传
|
||||||
|
*
|
||||||
|
* @param uploadFile
|
||||||
|
* @param uploadTypeEnum
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Callable<SuccessResultData<String>> asyncUploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
||||||
|
return () -> new SuccessResultData<>(fileService.uploadSingle(uploadFile, uploadTypeEnum, params));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,6 +18,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
@ -46,9 +47,9 @@ public class FileAppController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadfile")
|
@PostMapping("uploadfile")
|
||||||
public SuccessResultData<String> uploadFile(@RequestHeader("token") String token, @RequestParam("file") MultipartFile file) {
|
public Callable<SuccessResultData<String>> uploadFile(@RequestHeader("token") String token, @RequestParam("file") MultipartFile file) {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(token, file, UploadTypeEnum.FILE, params);
|
return asyncUploadSingle(token, file, UploadTypeEnum.FILE, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
||||||
@ -58,9 +59,9 @@ public class FileAppController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadimage")
|
@PostMapping("uploadimage")
|
||||||
public SuccessResultData<String> uploadImage(@RequestHeader("token") String token, @RequestParam("image") MultipartFile image) {
|
public Callable<SuccessResultData<String>> uploadImage(@RequestHeader("token") String token, @RequestParam("image") MultipartFile image) {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(token, image, UploadTypeEnum.IMAGE, params);
|
return asyncUploadSingle(token, image, UploadTypeEnum.IMAGE, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
||||||
@ -70,12 +71,12 @@ public class FileAppController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadvideo")
|
@PostMapping("uploadvideo")
|
||||||
public SuccessResultData<String> uploadVideo(@RequestHeader("token") String token, @RequestParam("video") MultipartFile video) {
|
public Callable<SuccessResultData<String>> uploadVideo(@RequestHeader("token") String token, @RequestParam("video") MultipartFile video) {
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
|
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
|
||||||
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getApp().getVideo());
|
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getApp().getVideo());
|
||||||
}
|
}
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(token, video, UploadTypeEnum.VIDEO, params);
|
return asyncUploadSingle(token, video, UploadTypeEnum.VIDEO, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传音频", notes = "上传音频接口")
|
@ApiOperation(value = "上传音频", notes = "上传音频接口")
|
||||||
@ -85,12 +86,12 @@ public class FileAppController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("uploadaudio")
|
@PostMapping("uploadaudio")
|
||||||
public SuccessResultData<String> uploadAudio(@RequestHeader("token") String token, @RequestParam("audio") MultipartFile audio) {
|
public Callable<SuccessResultData<String>> uploadAudio(@RequestHeader("token") String token, @RequestParam("audio") MultipartFile audio) {
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
|
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getApp() != null) {
|
||||||
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getApp().getAudio());
|
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getApp().getAudio());
|
||||||
}
|
}
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return uploadSingle(token, audio, UploadTypeEnum.AUDIO, params);
|
return asyncUploadSingle(token, audio, UploadTypeEnum.AUDIO, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
||||||
@ -122,8 +123,8 @@ public class FileAppController extends DefaultBaseController {
|
|||||||
* @param params
|
* @param params
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SuccessResultData<String> uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
private Callable<SuccessResultData<String>> asyncUploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
||||||
return fileService.uploadSingle(token, uploadFile, uploadTypeEnum, params);
|
return () -> new SuccessResultData<>(fileService.uploadSingle(token, uploadFile, uploadTypeEnum, params));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,11 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.servlet.AsyncContext;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName: FileController
|
* @ClassName: FileController
|
||||||
@ -118,17 +120,35 @@ public class FileRouteController extends DefaultBaseController {
|
|||||||
})
|
})
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@GetMapping("download/{isOpen}/{fileId}")
|
@GetMapping("download/{isOpen}/{fileId}")
|
||||||
public void downLoad(HttpServletRequest request, HttpServletResponse response, @PathVariable("isOpen") String isOpen, @PathVariable("fileId") String fileId) {
|
public void downLoad(HttpServletRequest request, HttpServletResponse response, @PathVariable("isOpen") Boolean isOpen, @PathVariable("fileId") String fileId) {
|
||||||
if (!ISystemConstant.IS_TRUE.equals(isOpen) && !ISystemConstant.IS_FALSE.equals(isOpen)) {
|
// 开启异步处理
|
||||||
|
AsyncContext asyncContext = request.startAsync(request, response);
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
asyncDownload(asyncContext, (HttpServletRequest) asyncContext.getRequest(), (HttpServletResponse) asyncContext.getResponse(), isOpen, fileId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步下载文件
|
||||||
|
*
|
||||||
|
* @param asyncContext
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @param isOpen
|
||||||
|
* @param fileId
|
||||||
|
*/
|
||||||
|
private void asyncDownload(AsyncContext asyncContext, HttpServletRequest request, HttpServletResponse response, Boolean isOpen, String fileId) {
|
||||||
|
if (isOpen == null) {
|
||||||
throw new ParamsException("参数错误");
|
throw new ParamsException("参数错误");
|
||||||
}
|
}
|
||||||
if (fileId.indexOf(".") > 0) {
|
if (fileId.indexOf(".") > 0) {
|
||||||
fileId = fileId.split("\\.")[0];
|
fileId = fileId.split("\\.")[0];
|
||||||
}
|
}
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = getParams();
|
||||||
params.put("fileId", fileId);
|
params.put("fileId", fileId);
|
||||||
params.put("isOpen", isOpen);
|
params.put("isOpen", isOpen);
|
||||||
fileService.downLoadFile(request, response, params);
|
fileService.downLoadFile(request, response, params);
|
||||||
|
asyncContext.complete();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
package ink.wgink.module.file.controller.wechat;
|
|
||||||
|
|
||||||
import ink.wgink.common.base.DefaultBaseController;
|
|
||||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
|
||||||
import ink.wgink.properties.FileProperties;
|
|
||||||
import ink.wgink.module.file.enums.UploadTypeEnum;
|
|
||||||
import ink.wgink.module.file.pojo.dtos.FileDTO;
|
|
||||||
import ink.wgink.module.file.service.IFileService;
|
|
||||||
import ink.wgink.pojo.result.ErrorResult;
|
|
||||||
import ink.wgink.pojo.result.SuccessResultData;
|
|
||||||
import io.swagger.annotations.*;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When you feel like quitting. Think about why you started
|
|
||||||
* 当你想要放弃的时候,想想当初你为何开始
|
|
||||||
*
|
|
||||||
* @ClassName: FileWechatController
|
|
||||||
* @Description: 微信文件
|
|
||||||
* @Author: WangGeng
|
|
||||||
* @Date: 2020/3/8 9:39 上午
|
|
||||||
* @Version: 1.0
|
|
||||||
**/
|
|
||||||
@Api(tags = ISystemConstant.API_TAGS_WECHAT_PREFIX + "文件管理接口")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(ISystemConstant.WECHAT_PREFIX + "/file")
|
|
||||||
public class FileWechatController extends DefaultBaseController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IFileService fileService;
|
|
||||||
@Autowired
|
|
||||||
private FileProperties fileProperties;
|
|
||||||
|
|
||||||
@ApiOperation(value = "上传文件", notes = "上传文件接口")
|
|
||||||
@ApiImplicitParams({
|
|
||||||
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
|
|
||||||
@ApiImplicitParam(name = "file", value = "文件name", paramType = "query")
|
|
||||||
})
|
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
|
||||||
@PostMapping("uploadfile")
|
|
||||||
public SuccessResultData<String> uploadFile(@RequestHeader("token") String token, @RequestParam("file") MultipartFile file) {
|
|
||||||
Map<String, Object> params = requestParams();
|
|
||||||
return uploadSingle(token, file, UploadTypeEnum.FILE, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "上传图片", notes = "上传图片接口")
|
|
||||||
@ApiImplicitParams({
|
|
||||||
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
|
|
||||||
@ApiImplicitParam(name = "image", value = "文件name", paramType = "query")
|
|
||||||
})
|
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
|
||||||
@PostMapping("uploadimage")
|
|
||||||
public SuccessResultData<String> uploadImage(@RequestHeader("token") String token, @RequestParam("image") MultipartFile image) {
|
|
||||||
Map<String, Object> params = requestParams();
|
|
||||||
return uploadSingle(token, image, UploadTypeEnum.IMAGE, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
|
||||||
@ApiImplicitParams({
|
|
||||||
@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
|
|
||||||
@ApiImplicitParam(name = "video", value = "文件video", paramType = "query")
|
|
||||||
})
|
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
|
||||||
@PostMapping("uploadvideo")
|
|
||||||
public SuccessResultData<String> uploadVideo(@RequestHeader("token") String token, @RequestParam("video") MultipartFile video) {
|
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getWechat() != null) {
|
|
||||||
fileService.checkVideoDurationAllow(video, fileProperties.getMediaMaxDuration().getWechat().getVideo());
|
|
||||||
}
|
|
||||||
Map<String, Object> params = requestParams();
|
|
||||||
return uploadSingle(token, video, UploadTypeEnum.VIDEO, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "上传音频", notes = "上传音频接口")
|
|
||||||
@ApiImplicitParams({@ApiImplicitParam(name = "token", value = "token", paramType = "header"),
|
|
||||||
@ApiImplicitParam(name = "audio", value = "文件audio", paramType = "query")
|
|
||||||
})
|
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
|
||||||
@PostMapping("uploadaudio")
|
|
||||||
public SuccessResultData<String> uploadAudio(@RequestHeader("token") String token, @RequestParam("audio") MultipartFile audio) {
|
|
||||||
if (fileProperties.getMediaMaxDuration() != null && fileProperties.getMediaMaxDuration().getWechat() != null) {
|
|
||||||
fileService.checkAudioDurationAllow(audio, fileProperties.getMediaMaxDuration().getWechat().getAudio());
|
|
||||||
}
|
|
||||||
Map<String, Object> params = requestParams();
|
|
||||||
return uploadSingle(token, audio, UploadTypeEnum.AUDIO, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "文件列表", notes = "文件列表接口")
|
|
||||||
@ApiImplicitParams({
|
|
||||||
@ApiImplicitParam(name = "ids", value = "id列表,逗号分隔", paramType = "query")
|
|
||||||
})
|
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
|
||||||
@GetMapping("list")
|
|
||||||
public List<FileDTO> list(@RequestParam("ids") String ids) {
|
|
||||||
List<String> idList = Arrays.asList(ids.split(","));
|
|
||||||
return fileService.list(idList);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上传文件
|
|
||||||
*
|
|
||||||
* @param uploadFile
|
|
||||||
* @param params
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private SuccessResultData<String> uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) {
|
|
||||||
return fileService.uploadSingle(token, uploadFile, uploadTypeEnum, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -113,9 +113,9 @@ public interface IFileService {
|
|||||||
* @param uploadFile
|
* @param uploadFile
|
||||||
* @param uploadTypeEnum
|
* @param uploadTypeEnum
|
||||||
* @param params
|
* @param params
|
||||||
* @return
|
* @return 文件ID
|
||||||
*/
|
*/
|
||||||
SuccessResultData<String> uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
|
String uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传
|
* 文件上传
|
||||||
@ -124,10 +124,10 @@ public interface IFileService {
|
|||||||
* @param uploadFile
|
* @param uploadFile
|
||||||
* @param uploadTypeEnum
|
* @param uploadTypeEnum
|
||||||
* @param params
|
* @param params
|
||||||
* @return
|
* @return 文件ID
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
SuccessResultData<String> uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
|
String uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传
|
* 文件上传
|
||||||
|
@ -174,15 +174,15 @@ public class FileServiceImpl extends DefaultBaseService implements IFileService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SuccessResultData<String> uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
public String uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
||||||
uploadFile(null, uploadFile, uploadTypeEnum, params);
|
uploadFile(null, uploadFile, uploadTypeEnum, params);
|
||||||
return new SuccessResultData<>(params.get("fileId").toString());
|
return params.get("fileId").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SuccessResultData<String> uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
public String uploadSingle(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
||||||
uploadFile(token, uploadFile, uploadTypeEnum, params);
|
uploadFile(token, uploadFile, uploadTypeEnum, params);
|
||||||
return new SuccessResultData<>(params.get("fileId").toString());
|
return params.get("fileId").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user