修改媒体视频上传返回结果
This commit is contained in:
parent
ebdeaba324
commit
e0f5cab373
@ -0,0 +1,61 @@
|
|||||||
|
package ink.wgink.pojo.dtos.file;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 文件上传成功
|
||||||
|
* @Author: WenG
|
||||||
|
* @Date: 2022/4/22 7:09
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@ApiModel
|
||||||
|
public class FileUploadSuccessDTO implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 396257753407239500L;
|
||||||
|
@ApiModelProperty(name = "fileId", value = "文件ID")
|
||||||
|
private String fileId;
|
||||||
|
@ApiModelProperty(name = "fileName", value = "文件名")
|
||||||
|
private String fileName;
|
||||||
|
@ApiModelProperty(name = "fileSize", value = "文件大小")
|
||||||
|
private long fileSize;
|
||||||
|
|
||||||
|
public FileUploadSuccessDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileUploadSuccessDTO(String fileId) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileUploadSuccessDTO(String fileId, String fileName, long fileSize) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
this.fileName = fileName;
|
||||||
|
this.fileSize = fileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileId() {
|
||||||
|
return fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileId(String fileId) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName() {
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName(String fileName) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getFileSize() {
|
||||||
|
return fileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileSize(long fileSize) {
|
||||||
|
this.fileSize = fileSize;
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,7 @@ import ink.wgink.common.base.DefaultBaseController;
|
|||||||
import ink.wgink.exceptions.PropertiesException;
|
import ink.wgink.exceptions.PropertiesException;
|
||||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||||
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
||||||
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
|
||||||
import ink.wgink.module.file.media.service.video.IVideoService;
|
import ink.wgink.module.file.media.service.video.IVideoService;
|
||||||
import ink.wgink.pojo.ListPage;
|
import ink.wgink.pojo.ListPage;
|
||||||
import ink.wgink.pojo.result.ErrorResult;
|
import ink.wgink.pojo.result.ErrorResult;
|
||||||
@ -21,7 +22,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|||||||
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,14 +46,14 @@ public class VideoController extends DefaultBaseController {
|
|||||||
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
@ApiOperation(value = "上传视频", notes = "上传视频接口")
|
||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("upload")
|
@PostMapping("upload")
|
||||||
public Callable<SuccessResultData<String>> upload(@RequestParam("video") MultipartFile video) {
|
public SuccessResultData<VideoUploadSuccessDTO> upload(@RequestParam("video") MultipartFile video) {
|
||||||
if (StringUtils.isBlank(mediaProperties.getUploadPath())) {
|
if (StringUtils.isBlank(mediaProperties.getUploadPath())) {
|
||||||
throw new PropertiesException("未设置文件上传路径");
|
throw new PropertiesException("未设置文件上传路径");
|
||||||
}
|
}
|
||||||
if (StringUtils.isBlank(mediaProperties.getFfmpegPath())) {
|
if (StringUtils.isBlank(mediaProperties.getFfmpegPath())) {
|
||||||
throw new PropertiesException("未设置解码器路径");
|
throw new PropertiesException("未设置解码器路径");
|
||||||
}
|
}
|
||||||
return () -> new SuccessResultData<>(videoService.upload(video));
|
return new SuccessResultData<>(videoService.upload(video));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除文件类别(id列表)", notes = "删除文件类别(id列表)接口")
|
@ApiOperation(value = "删除文件类别(id列表)", notes = "删除文件类别(id列表)接口")
|
||||||
|
@ -603,8 +603,6 @@ public class MediaManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
VideoMetaInfo videoInfo = new VideoMetaInfo();
|
|
||||||
|
|
||||||
String parseResult = getMetaInfoFromFFmpeg(videoFile);
|
String parseResult = getMetaInfoFromFFmpeg(videoFile);
|
||||||
|
|
||||||
Matcher durationMacher = durationPattern.matcher(parseResult);
|
Matcher durationMacher = durationPattern.matcher(parseResult);
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package ink.wgink.module.file.media.pojo.dtos.video;
|
||||||
|
|
||||||
|
import ink.wgink.pojo.dtos.file.FileUploadSuccessDTO;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 视频上传成功
|
||||||
|
* @Author: WenG
|
||||||
|
* @Date: 2022/4/22 7:09
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@ApiModel
|
||||||
|
public class VideoUploadSuccessDTO extends FileUploadSuccessDTO {
|
||||||
|
|
||||||
|
public VideoUploadSuccessDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public VideoUploadSuccessDTO(String fileId) {
|
||||||
|
super(fileId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public VideoUploadSuccessDTO(String fileId, String fileName, long fileSize) {
|
||||||
|
super(fileId, fileName, fileSize);
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,7 @@
|
|||||||
package ink.wgink.module.file.media.service.video;
|
package ink.wgink.module.file.media.service.video;
|
||||||
|
|
||||||
import ink.wgink.exceptions.SearchException;
|
|
||||||
import ink.wgink.module.file.media.pojo.dtos.ConvertProgressDTO;
|
|
||||||
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
||||||
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
|
||||||
import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
|
import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
|
||||||
import ink.wgink.pojo.ListPage;
|
import ink.wgink.pojo.ListPage;
|
||||||
import ink.wgink.pojo.result.SuccessResultList;
|
import ink.wgink.pojo.result.SuccessResultList;
|
||||||
@ -12,7 +11,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -36,7 +34,7 @@ public interface IVideoService {
|
|||||||
* @param videoVO
|
* @param videoVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String save(VideoVO videoVO);
|
VideoUploadSuccessDTO save(VideoVO videoVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@ -45,7 +43,7 @@ public interface IVideoService {
|
|||||||
* @param videoVO
|
* @param videoVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String save(String token, VideoVO videoVO);
|
VideoUploadSuccessDTO save(String token, VideoVO videoVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
@ -82,7 +80,7 @@ public interface IVideoService {
|
|||||||
* @param video
|
* @param video
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String upload(MultipartFile video);
|
VideoUploadSuccessDTO upload(MultipartFile video);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传视频
|
* 上传视频
|
||||||
@ -91,7 +89,7 @@ public interface IVideoService {
|
|||||||
* @param video
|
* @param video
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String upload(String token, MultipartFile video);
|
VideoUploadSuccessDTO upload(String token, MultipartFile video);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换进度列表
|
* 转换进度列表
|
||||||
|
@ -10,15 +10,14 @@ import ink.wgink.module.file.media.enums.ConvertStatusEnum;
|
|||||||
import ink.wgink.module.file.media.manager.MediaManager;
|
import ink.wgink.module.file.media.manager.MediaManager;
|
||||||
import ink.wgink.module.file.media.manager.domain.MusicMetaInfo;
|
import ink.wgink.module.file.media.manager.domain.MusicMetaInfo;
|
||||||
import ink.wgink.module.file.media.manager.domain.VideoMetaInfo;
|
import ink.wgink.module.file.media.manager.domain.VideoMetaInfo;
|
||||||
import ink.wgink.module.file.media.pojo.dtos.ConvertProgressDTO;
|
|
||||||
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoDTO;
|
||||||
|
import ink.wgink.module.file.media.pojo.dtos.video.VideoUploadSuccessDTO;
|
||||||
import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
|
import ink.wgink.module.file.media.pojo.vos.video.VideoVO;
|
||||||
import ink.wgink.module.file.media.service.IMediaService;
|
import ink.wgink.module.file.media.service.IMediaService;
|
||||||
import ink.wgink.module.file.media.service.video.IVideoService;
|
import ink.wgink.module.file.media.service.video.IVideoService;
|
||||||
import ink.wgink.module.file.media.task.transcoding.VideoConvertManager;
|
import ink.wgink.module.file.media.task.transcoding.VideoConvertManager;
|
||||||
import ink.wgink.module.file.media.task.transcoding.runnable.VideoConvertRunnable;
|
import ink.wgink.module.file.media.task.transcoding.runnable.VideoConvertRunnable;
|
||||||
import ink.wgink.pojo.ListPage;
|
import ink.wgink.pojo.ListPage;
|
||||||
import ink.wgink.pojo.pos.FilePO;
|
|
||||||
import ink.wgink.pojo.result.SuccessResultList;
|
import ink.wgink.pojo.result.SuccessResultList;
|
||||||
import ink.wgink.properties.media.MediaProperties;
|
import ink.wgink.properties.media.MediaProperties;
|
||||||
import ink.wgink.util.UUIDUtil;
|
import ink.wgink.util.UUIDUtil;
|
||||||
@ -26,8 +25,6 @@ import ink.wgink.util.date.DateUtil;
|
|||||||
import ink.wgink.util.map.HashMapUtil;
|
import ink.wgink.util.map.HashMapUtil;
|
||||||
import org.apache.catalina.connector.ClientAbortException;
|
import org.apache.catalina.connector.ClientAbortException;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.joda.time.DateTime;
|
|
||||||
import org.joda.time.DateTimeZone;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -44,8 +41,6 @@ import java.net.URLEncoder;
|
|||||||
import java.nio.channels.Channels;
|
import java.nio.channels.Channels;
|
||||||
import java.nio.channels.FileChannel;
|
import java.nio.channels.FileChannel;
|
||||||
import java.nio.channels.WritableByteChannel;
|
import java.nio.channels.WritableByteChannel;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -70,12 +65,12 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
|
|||||||
private IVideoDao videoDao;
|
private IVideoDao videoDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String save(VideoVO videoVO) {
|
public VideoUploadSuccessDTO save(VideoVO videoVO) {
|
||||||
return save(null, videoVO);
|
return save(null, videoVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String save(String token, VideoVO videoVO) {
|
public VideoUploadSuccessDTO save(String token, VideoVO videoVO) {
|
||||||
String fileId = UUIDUtil.getUUID();
|
String fileId = UUIDUtil.getUUID();
|
||||||
Map<String, Object> params = HashMapUtil.beanToMap(videoVO);
|
Map<String, Object> params = HashMapUtil.beanToMap(videoVO);
|
||||||
params.put("fileId", fileId);
|
params.put("fileId", fileId);
|
||||||
@ -85,7 +80,8 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
|
|||||||
setAppSaveInfo(token, params);
|
setAppSaveInfo(token, params);
|
||||||
}
|
}
|
||||||
videoDao.save(params);
|
videoDao.save(params);
|
||||||
return fileId;
|
|
||||||
|
return new VideoUploadSuccessDTO(params.get("fileId").toString(), params.get("fileName").toString(), Long.parseLong(params.get("fileSize").toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -163,12 +159,12 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String upload(MultipartFile video) {
|
public VideoUploadSuccessDTO upload(MultipartFile video) {
|
||||||
return upload(null, video);
|
return upload(null, video);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String upload(String token, MultipartFile video) {
|
public VideoUploadSuccessDTO upload(String token, MultipartFile video) {
|
||||||
String filePath = VIDEO_PATH + File.separator + DateUtil.getDays();
|
String filePath = VIDEO_PATH + File.separator + DateUtil.getDays();
|
||||||
String uploadFolderPath = mediaProperties.getUploadPath() + File.separator + filePath;
|
String uploadFolderPath = mediaProperties.getUploadPath() + File.separator + filePath;
|
||||||
String fileName = video.getOriginalFilename();
|
String fileName = video.getOriginalFilename();
|
||||||
@ -183,7 +179,7 @@ public class VideoServiceImpl extends DefaultBaseService implements IVideoServic
|
|||||||
if (videoDTO != null) {
|
if (videoDTO != null) {
|
||||||
LOG.error("上传的【{}】视频已经存在,原文件为【{}】,返回原文件ID", videoDTO.getFileName(), videoDTO.getFileName());
|
LOG.error("上传的【{}】视频已经存在,原文件为【{}】,返回原文件ID", videoDTO.getFileName(), videoDTO.getFileName());
|
||||||
uploadFile.delete();
|
uploadFile.delete();
|
||||||
return videoDTO.getFileId();
|
return new VideoUploadSuccessDTO(videoDTO.getFileId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建视频内容
|
// 构建视频内容
|
||||||
|
Loading…
Reference in New Issue
Block a user