fix(图片预览): 图片预览优化
This commit is contained in:
parent
d27d17f2a0
commit
c84d4bf9c6
@ -1,6 +1,7 @@
|
||||
package com.qiwenshare.file.controller;
|
||||
|
||||
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.exception.NotLoginException;
|
||||
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.UploadFileDTO;
|
||||
import com.qiwenshare.file.dto.file.PreviewDTO;
|
||||
import com.qiwenshare.file.mapper.ImageMapper;
|
||||
import com.qiwenshare.file.service.StorageService;
|
||||
import com.qiwenshare.file.vo.file.FileListVo;
|
||||
import com.qiwenshare.file.vo.file.UploadFileVo;
|
||||
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 io.swagger.v3.oas.annotations.Operation;
|
||||
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 javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -52,6 +61,10 @@ public class FiletransferController {
|
||||
StorageService storageService;
|
||||
@Resource
|
||||
IUploadTaskService uploadTaskService;
|
||||
@Resource
|
||||
ImageMapper imageMapper;
|
||||
@Resource
|
||||
UFOPFactory ufopFactory;
|
||||
|
||||
@Resource
|
||||
IUploadTaskDetailService uploadTaskDetailService;
|
||||
@ -211,6 +224,32 @@ public class FiletransferController {
|
||||
}
|
||||
|
||||
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());
|
||||
httpServletResponse.setHeader("Content-Type", mime);
|
||||
String rangeString = httpServletRequest.getHeader("Range");//如果是video标签发起的请求就不会为null
|
||||
|
@ -276,6 +276,8 @@ public class OfficeController {
|
||||
lambdaUpdateWrapper
|
||||
.set(FileBean::getIdentifier, md5Str)
|
||||
.set(FileBean::getFileSize, Long.valueOf(fileLength))
|
||||
.set(FileBean::getModifyTime, DateUtil.getCurrentTime())
|
||||
.set(FileBean::getModifyUserId, loginUser.getUserId())
|
||||
.eq(FileBean::getFileId, fileBean.getFileId());
|
||||
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 javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
import java.util.zip.Adler32;
|
||||
@ -62,6 +64,8 @@ public class FiletransferService implements IFiletransferService {
|
||||
UploadTaskDetailMapper UploadTaskDetailMapper;
|
||||
@Resource
|
||||
UploadTaskMapper uploadTaskMapper;
|
||||
@Resource
|
||||
ImageMapper imageMapper;
|
||||
|
||||
@Override
|
||||
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())
|
||||
.eq(UploadTask::getIdentifier, uploadFileDto.getIdentifier());
|
||||
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())) {
|
||||
UploadTaskDetail UploadTaskDetail = new UploadTaskDetail();
|
||||
|
@ -41,4 +41,7 @@ public class FileListVo {
|
||||
private String deleteTime;
|
||||
|
||||
private String deleteBatchNum;
|
||||
|
||||
private Integer imageWidth;
|
||||
private Integer imageHeight;
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
<select id="userFileList" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||
select * from userfile a
|
||||
left join file on file.fileId = a.fileId
|
||||
left join image on a.fileId = image.fileId
|
||||
<where>
|
||||
<if test="userFile.userId != null">
|
||||
and a.userId = #{userFile.userId}
|
||||
@ -58,6 +59,7 @@
|
||||
</sql>
|
||||
<select id="selectFileByExtendName" parameterType="com.qiwenshare.file.domain.UserFile" resultType="com.qiwenshare.file.vo.file.FileListVo">
|
||||
select * from userfile
|
||||
left join image on userfile.fileId = image.fileId
|
||||
<include refid="selectByExtendName"></include>
|
||||
limit #{beginCount}, #{pageCount}
|
||||
</select>
|
||||
|
Loading…
Reference in New Issue
Block a user