fix(图片预览): 图片预览优化
This commit is contained in:
parent
d27d17f2a0
commit
c84d4bf9c6
@ -1,6 +1,7 @@
|
|||||||
package com.qiwenshare.file.controller;
|
package com.qiwenshare.file.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.qiwenshare.common.anno.MyLog;
|
import com.qiwenshare.common.anno.MyLog;
|
||||||
import com.qiwenshare.common.exception.NotLoginException;
|
import com.qiwenshare.common.exception.NotLoginException;
|
||||||
import com.qiwenshare.common.result.RestResult;
|
import com.qiwenshare.common.result.RestResult;
|
||||||
@ -12,10 +13,14 @@ import com.qiwenshare.file.domain.*;
|
|||||||
import com.qiwenshare.file.dto.file.DownloadFileDTO;
|
import com.qiwenshare.file.dto.file.DownloadFileDTO;
|
||||||
import com.qiwenshare.file.dto.file.UploadFileDTO;
|
import com.qiwenshare.file.dto.file.UploadFileDTO;
|
||||||
import com.qiwenshare.file.dto.file.PreviewDTO;
|
import com.qiwenshare.file.dto.file.PreviewDTO;
|
||||||
|
import com.qiwenshare.file.mapper.ImageMapper;
|
||||||
import com.qiwenshare.file.service.StorageService;
|
import com.qiwenshare.file.service.StorageService;
|
||||||
import com.qiwenshare.file.vo.file.FileListVo;
|
import com.qiwenshare.file.vo.file.FileListVo;
|
||||||
import com.qiwenshare.file.vo.file.UploadFileVo;
|
import com.qiwenshare.file.vo.file.UploadFileVo;
|
||||||
import com.qiwenshare.ufop.constant.UploadFileStatusEnum;
|
import com.qiwenshare.ufop.constant.UploadFileStatusEnum;
|
||||||
|
import com.qiwenshare.ufop.factory.UFOPFactory;
|
||||||
|
import com.qiwenshare.ufop.operation.download.Downloader;
|
||||||
|
import com.qiwenshare.ufop.operation.download.domain.DownloadFile;
|
||||||
import com.qiwenshare.ufop.util.UFOPUtils;
|
import com.qiwenshare.ufop.util.UFOPUtils;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -24,8 +29,12 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -52,6 +61,10 @@ public class FiletransferController {
|
|||||||
StorageService storageService;
|
StorageService storageService;
|
||||||
@Resource
|
@Resource
|
||||||
IUploadTaskService uploadTaskService;
|
IUploadTaskService uploadTaskService;
|
||||||
|
@Resource
|
||||||
|
ImageMapper imageMapper;
|
||||||
|
@Resource
|
||||||
|
UFOPFactory ufopFactory;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
IUploadTaskDetailService uploadTaskDetailService;
|
IUploadTaskDetailService uploadTaskDetailService;
|
||||||
@ -211,6 +224,32 @@ public class FiletransferController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FileBean fileBean = fileService.getById(userFile.getFileId());
|
FileBean fileBean = fileService.getById(userFile.getFileId());
|
||||||
|
/********************************** 图片预览适配 **************************************/
|
||||||
|
LambdaQueryWrapper<Image> imageLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
imageLambdaQueryWrapper.eq(Image::getFileId, fileBean.getFileId());
|
||||||
|
Image result = imageMapper.selectOne(imageLambdaQueryWrapper);
|
||||||
|
if (result == null) {
|
||||||
|
if (UFOPUtils.isImageFile(userFile.getExtendName())) {
|
||||||
|
Downloader downloader = ufopFactory.getDownloader(fileBean.getStorageType());
|
||||||
|
DownloadFile downloadFile = new DownloadFile();
|
||||||
|
downloadFile.setFileUrl(fileBean.getFileUrl());
|
||||||
|
InputStream is = downloader.getInputStream(downloadFile);
|
||||||
|
BufferedImage src = null;
|
||||||
|
try {
|
||||||
|
src = ImageIO.read(is);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
Image image = new Image();
|
||||||
|
image.setImageWidth(src.getWidth());
|
||||||
|
image.setImageHeight(src.getHeight());
|
||||||
|
image.setFileId(fileBean.getFileId());
|
||||||
|
imageMapper.insert(image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
String mime= MimeUtils.getMime(userFile.getExtendName());
|
String mime= MimeUtils.getMime(userFile.getExtendName());
|
||||||
httpServletResponse.setHeader("Content-Type", mime);
|
httpServletResponse.setHeader("Content-Type", mime);
|
||||||
String rangeString = httpServletRequest.getHeader("Range");//如果是video标签发起的请求就不会为null
|
String rangeString = httpServletRequest.getHeader("Range");//如果是video标签发起的请求就不会为null
|
||||||
|
@ -276,6 +276,8 @@ public class OfficeController {
|
|||||||
lambdaUpdateWrapper
|
lambdaUpdateWrapper
|
||||||
.set(FileBean::getIdentifier, md5Str)
|
.set(FileBean::getIdentifier, md5Str)
|
||||||
.set(FileBean::getFileSize, Long.valueOf(fileLength))
|
.set(FileBean::getFileSize, Long.valueOf(fileLength))
|
||||||
|
.set(FileBean::getModifyTime, DateUtil.getCurrentTime())
|
||||||
|
.set(FileBean::getModifyUserId, loginUser.getUserId())
|
||||||
.eq(FileBean::getFileId, fileBean.getFileId());
|
.eq(FileBean::getFileId, fileBean.getFileId());
|
||||||
fileService.update(lambdaUpdateWrapper);
|
fileService.update(lambdaUpdateWrapper);
|
||||||
|
|
||||||
|
32
src/main/java/com/qiwenshare/file/domain/Image.java
Normal file
32
src/main/java/com/qiwenshare/file/domain/Image.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package com.qiwenshare.file.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author MAC
|
||||||
|
* @version 1.0
|
||||||
|
* @description: TODO
|
||||||
|
* @date 2021/12/7 22:05
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Table(name = "image")
|
||||||
|
@Entity
|
||||||
|
@TableName("image")
|
||||||
|
public class Image {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
@Column(columnDefinition="bigint(20)")
|
||||||
|
private Long imageId;
|
||||||
|
@Column(columnDefinition = "bigint(20)")
|
||||||
|
private Long fileId;
|
||||||
|
@Column(columnDefinition="int(5)")
|
||||||
|
private Integer imageWidth;
|
||||||
|
@Column(columnDefinition="int(5)")
|
||||||
|
private Integer imageHeight;
|
||||||
|
}
|
12
src/main/java/com/qiwenshare/file/mapper/ImageMapper.java
Normal file
12
src/main/java/com/qiwenshare/file/mapper/ImageMapper.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package com.qiwenshare.file.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.qiwenshare.file.domain.Image;
|
||||||
|
|
||||||
|
public interface ImageMapper extends BaseMapper<Image> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -32,8 +32,10 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.zip.Adler32;
|
import java.util.zip.Adler32;
|
||||||
@ -62,6 +64,8 @@ public class FiletransferService implements IFiletransferService {
|
|||||||
UploadTaskDetailMapper UploadTaskDetailMapper;
|
UploadTaskDetailMapper UploadTaskDetailMapper;
|
||||||
@Resource
|
@Resource
|
||||||
UploadTaskMapper uploadTaskMapper;
|
UploadTaskMapper uploadTaskMapper;
|
||||||
|
@Resource
|
||||||
|
ImageMapper imageMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, Long userId) {
|
public void uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, Long userId) {
|
||||||
@ -130,6 +134,23 @@ public class FiletransferService implements IFiletransferService {
|
|||||||
lambdaUpdateWrapper.set(UploadTask::getUploadStatus, UploadFileStatusEnum.SUCCESS.getCode())
|
lambdaUpdateWrapper.set(UploadTask::getUploadStatus, UploadFileStatusEnum.SUCCESS.getCode())
|
||||||
.eq(UploadTask::getIdentifier, uploadFileDto.getIdentifier());
|
.eq(UploadTask::getIdentifier, uploadFileDto.getIdentifier());
|
||||||
uploadTaskMapper.update(null, lambdaUpdateWrapper);
|
uploadTaskMapper.update(null, lambdaUpdateWrapper);
|
||||||
|
if (UFOPUtils.isImageFile(uploadFileResult.getExtendName())) {
|
||||||
|
Downloader downloader = ufopFactory.getDownloader(uploadFileResult.getStorageType().getCode());
|
||||||
|
DownloadFile downloadFile = new DownloadFile();
|
||||||
|
downloadFile.setFileUrl(uploadFileResult.getFileUrl());
|
||||||
|
InputStream is = downloader.getInputStream(downloadFile);
|
||||||
|
BufferedImage src = null;
|
||||||
|
try {
|
||||||
|
src = ImageIO.read(is);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
Image image = new Image();
|
||||||
|
image.setImageWidth(src.getWidth());
|
||||||
|
image.setImageHeight(src.getHeight());
|
||||||
|
image.setFileId(fileBean.getFileId());
|
||||||
|
imageMapper.insert(image);
|
||||||
|
}
|
||||||
|
|
||||||
} else if (UploadFileStatusEnum.UNCOMPLATE.equals(uploadFileResult.getStatus())) {
|
} else if (UploadFileStatusEnum.UNCOMPLATE.equals(uploadFileResult.getStatus())) {
|
||||||
UploadTaskDetail UploadTaskDetail = new UploadTaskDetail();
|
UploadTaskDetail UploadTaskDetail = new UploadTaskDetail();
|
||||||
|
@ -41,4 +41,7 @@ public class FileListVo {
|
|||||||
private String deleteTime;
|
private String deleteTime;
|
||||||
|
|
||||||
private String deleteBatchNum;
|
private String deleteBatchNum;
|
||||||
|
|
||||||
|
private Integer imageWidth;
|
||||||
|
private Integer imageHeight;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
<select id="userFileList" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
<select id="userFileList" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||||
select * from userfile a
|
select * from userfile a
|
||||||
left join file on file.fileId = a.fileId
|
left join file on file.fileId = a.fileId
|
||||||
|
left join image on a.fileId = image.fileId
|
||||||
<where>
|
<where>
|
||||||
<if test="userFile.userId != null">
|
<if test="userFile.userId != null">
|
||||||
and a.userId = #{userFile.userId}
|
and a.userId = #{userFile.userId}
|
||||||
@ -58,6 +59,7 @@
|
|||||||
</sql>
|
</sql>
|
||||||
<select id="selectFileByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
<select id="selectFileByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||||
select * from userfile
|
select * from userfile
|
||||||
|
left join image on userfile.fileId = image.fileId
|
||||||
<include refid="selectByExtendName"></include>
|
<include refid="selectByExtendName"></include>
|
||||||
limit #{beginCount}, #{pageCount}
|
limit #{beginCount}, #{pageCount}
|
||||||
</select>
|
</select>
|
||||||
|
Loading…
Reference in New Issue
Block a user