reghao 3 лет назад
Родитель
Сommit
f6b4c487a7

+ 23 - 4
src/main/java/cn/reghao/dfs/store/controller/MediaUploadController.java

@@ -40,6 +40,25 @@ public class MediaUploadController {
         this.imageFileService = imageFileService;
     }
 
+    @ApiOperation(value = "上传小图片(小于 1MiB)")
+    @PostMapping(value = "/img", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String uploadSmallImage(@NotNull MultipartFile file) throws Exception {
+        String contentType = file.getContentType();
+        if (contentType == null || !contentType.startsWith("image")) {
+            return WebBody.failWithMsg("content-type 错误");
+        }
+
+        long size = file.getSize();
+        if (size > 1024*1024) {
+            return WebBody.failWithMsg("仅支持小于 1MiB 的图片");
+        }
+
+        UploadingFile uploadingFile = new UploadingFile(file);
+        UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
+        UploadFileRet uploadFileRet = new UploadFileRet(uploadedFile.getUploadId(), uploadedFile.getPathUrl().getUrl());
+        return WebBody.success(uploadFileRet);
+    }
+
     @ApiOperation(value = "上传图片文件")
     @PostMapping(value = "/image", produces = MediaType.APPLICATION_JSON_VALUE)
     public String uploadImageFile(@NotNull MultipartFile file) throws Exception {
@@ -48,10 +67,10 @@ public class MediaUploadController {
             return WebBody.failWithMsg("content-type 错误");
         }
 
-        UploadedFile uploadedFile = new UploadedFile(file);
-        UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
-        String fileId = uploadFileRet.getFileId();
-        PathUrl pathUrl = uploadFileRet.getPathUrl();
+        UploadingFile uploadingFile = new UploadingFile(file);
+        UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
+        String fileId = uploadedFile.getFileId();
+        PathUrl pathUrl = uploadedFile.getPathUrl();
 
         ImageFileRet imageFileRet = imageFileService.process(fileId, pathUrl);
         return WebBody.success(imageFileRet);

+ 5 - 5
src/main/java/cn/reghao/dfs/store/controller/SpiderFileController.java

@@ -1,10 +1,10 @@
 package cn.reghao.dfs.store.controller;
 
-import cn.reghao.dfs.store.model.dto.UploadedFile;
+import cn.reghao.dfs.store.model.dto.UploadingFile;
 import cn.reghao.dfs.store.service.FileUploadService;
 import cn.reghao.jutil.jdk.result.WebBody;
 import cn.reghao.dfs.store.db.mapper.FileUserMapper;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
@@ -46,9 +46,9 @@ public class SpiderFileController {
                 return WebBody.failWithMsg(username + " 不存在");
             }
 
-            UploadedFile uploadedFile = new UploadedFile(filename, size, contentType, inputStream);
-            UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile/*, userId*/);
-            return WebBody.success(uploadFileRet);
+            UploadingFile uploadingFile = new UploadingFile(filename, size, contentType, inputStream);
+            UploadedFile uploadedFile = fileUploadService.put(uploadingFile/*, userId*/);
+            return WebBody.success(uploadedFile);
         }
         return WebBody.failWithMsg("content-type 错误");
     }

+ 11 - 0
src/main/java/cn/reghao/dfs/store/db/mapper/ImageUrlMapper.java

@@ -3,6 +3,9 @@ package cn.reghao.dfs.store.db.mapper;
 import cn.reghao.dfs.store.model.po.ImageUrl;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author reghao
@@ -10,4 +13,12 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface ImageUrlMapper extends BaseMapper<ImageUrl> {
+    void updateSetUrl(@Param("fileId") String fileId, @Param("url") String url);
+
+    @Deprecated
+    List<String> getImageUrls();
+    @Deprecated
+    void updateImageUrl(@Param("originUrl") String originUrl,
+                        @Param("imageFileId") String imageFileId,
+                        @Param("url") String url);
 }

+ 3 - 0
src/main/java/cn/reghao/dfs/store/db/mapper/VideoUrlMapper.java

@@ -4,6 +4,7 @@ import cn.reghao.dfs.api.dto.VideoUrlDto;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -13,5 +14,7 @@ import java.util.List;
  */
 @Mapper
 public interface VideoUrlMapper extends BaseMapper<VideoUrl> {
+    void updateSetUrl(@Param("fileId") String fileId, @Param("url") String url);
+
     List<VideoUrlDto> findByVideoFileId(String videoFileId);
 }

+ 9 - 15
src/main/java/cn/reghao/dfs/store/model/dto/UploadedFile.java

@@ -2,27 +2,21 @@ package cn.reghao.dfs.store.model.dto;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.Serializable;
 
 /**
+ * 已上传的文件
+ *
  * @author reghao
- * @date 2022-06-11 23:08:14
+ * @date 2022-04-26 15:22:49
  */
 @AllArgsConstructor
 @Getter
-public class UploadedFile {
-    private String filename;
-    private long size;
-    private String contentType;
-    private InputStream inputStream;
+public class UploadedFile implements Serializable {
+    private static final long serialVersionUID = 1L;
 
-    public UploadedFile(MultipartFile multipartFile) throws IOException {
-        this.filename = multipartFile.getOriginalFilename();
-        this.size = multipartFile.getSize();
-        this.contentType = multipartFile.getContentType();
-        this.inputStream = multipartFile.getInputStream();
-    }
+    private String uploadId;
+    private String fileId;
+    private PathUrl pathUrl;
 }

+ 30 - 0
src/main/java/cn/reghao/dfs/store/model/dto/UploadingFile.java

@@ -0,0 +1,30 @@
+package cn.reghao.dfs.store.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * 待上传的文件
+ *
+ * @author reghao
+ * @date 2022-06-11 23:08:14
+ */
+@AllArgsConstructor
+@Getter
+public class UploadingFile {
+    private String filename;
+    private long size;
+    private String contentType;
+    private InputStream inputStream;
+
+    public UploadingFile(MultipartFile multipartFile) throws IOException {
+        this.filename = multipartFile.getOriginalFilename();
+        this.size = multipartFile.getSize();
+        this.contentType = multipartFile.getContentType();
+        this.inputStream = multipartFile.getInputStream();
+    }
+}

+ 2 - 0
src/main/java/cn/reghao/dfs/store/model/po/VideoUrl.java

@@ -1,11 +1,13 @@
 package cn.reghao.dfs.store.model.po;
 
 import cn.reghao.jutil.jdk.db.BaseObject;
+import lombok.Getter;
 
 /**
  * @author reghao
  * @date 2022-08-04 09:19:16
  */
+@Getter
 public class VideoUrl extends BaseObject<Integer> {
     private String videoFileId;
     private String fileId;

+ 3 - 11
src/main/java/cn/reghao/dfs/store/model/vo/UploadFileRet.java

@@ -1,21 +1,13 @@
 package cn.reghao.dfs.store.model.vo;
 
-import cn.reghao.dfs.store.model.dto.PathUrl;
 import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
 
 /**
  * @author reghao
- * @date 2022-04-26 15:22:49
+ * @date 2022-08-09 17:46:04
  */
 @AllArgsConstructor
-@Getter
-public class UploadFileRet implements Serializable {
-    private static final long serialVersionUID = 1L;
-
+public class UploadFileRet {
     private String uploadId;
-    private String fileId;
-    private PathUrl pathUrl;
+    private String url;
 }

+ 5 - 5
src/main/java/cn/reghao/dfs/store/service/CacheService.java

@@ -1,8 +1,8 @@
 package cn.reghao.dfs.store.service;
 
-import cn.reghao.dfs.store.model.dto.UploadedFile;
+import cn.reghao.dfs.store.model.dto.UploadingFile;
 import cn.reghao.dfs.store.model.vo.CacheResult;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import cn.reghao.jutil.jdk.http.util.UrlFormatter;
 import cn.reghao.jutil.jdk.http.util.UserAgents;
 import lombok.extern.slf4j.Slf4j;
@@ -48,9 +48,9 @@ public class CacheService {
                 String filename = UrlFormatter.getFilename(url);
                 long size = inputStream.available();
                 String contentType = fileTypeService.getFileType(filename).getContentType();
-                UploadedFile uploadedFile = new UploadedFile(filename, size, contentType, inputStream);
-                UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
-                return new CacheResult(uploadFileRet.getUploadId(), uploadFileRet.getPathUrl().getUrl());
+                UploadingFile uploadingFile = new UploadingFile(filename, size, contentType, inputStream);
+                UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
+                return new CacheResult(uploadedFile.getUploadId(), uploadedFile.getPathUrl().getUrl());
             } else if (statusCode == 404) {
                 return new CacheResult(true);
             }

+ 7 - 7
src/main/java/cn/reghao/dfs/store/service/FileUploadService.java

@@ -4,7 +4,7 @@ import cn.reghao.dfs.store.model.dto.*;
 import cn.reghao.jutil.jdk.security.DigestUtil;
 import cn.reghao.dfs.store.model.vo.FileMap;
 import cn.reghao.dfs.store.model.vo.FilePartRet;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import cn.reghao.dfs.store.model.vo.UploadPrepareRet;
 import cn.reghao.dfs.store.db.repository.FileRepository;
 import cn.reghao.dfs.store.model.po.FileInfo;
@@ -90,21 +90,21 @@ public class FileUploadService {
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public synchronized UploadFileRet put(UploadedFile uploadedFile) throws Exception {
-        byte[] bytes = uploadedFile.getInputStream().readAllBytes();
+    public synchronized UploadedFile put(UploadingFile uploadingFile) throws Exception {
+        byte[] bytes = uploadingFile.getInputStream().readAllBytes();
         String sha256sum = DigestUtil.sha256sum(bytes);
         FileInfo fileInfo = fileRepository.getFileInfo(sha256sum);
         if (fileInfo != null) {
             String fileId = fileInfo.getFileId();
             String uploadId = fileRepository.getOrCreateUploadId(fileInfo.getFileId());
             PathUrl pathUrl = fileUrlService.getPathUrl(fileId);
-            return new UploadFileRet(uploadId, fileId, pathUrl);
+            return new UploadedFile(uploadId, fileId, pathUrl);
         } else {
             int size = bytes.length;
-            String filename = uploadedFile.getFilename();
+            String filename = uploadingFile.getFilename();
             FileContentType fileContentType = fileTypeService.getFileType(filename);
             String suffix = StringUtil.getSuffix(filename);
-            String contentType = uploadedFile.getContentType();
+            String contentType = uploadingFile.getContentType();
             FileMap fileMap = fileRepository.createUploadId(filename, sha256sum, size, fileContentType);
 
             String fileId = fileMap.getFileId();
@@ -119,7 +119,7 @@ public class FileUploadService {
             }
 
             fileRepository.saveFile(fileId, fileContentType, pathUrl);
-            return new UploadFileRet(uploadId, fileId, pathUrl);
+            return new UploadedFile(uploadId, fileId, pathUrl);
         }
     }
 

+ 11 - 11
src/main/java/cn/reghao/dfs/store/service/media/ImageFileService.java

@@ -3,11 +3,11 @@ package cn.reghao.dfs.store.service.media;
 import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
 import cn.reghao.dfs.store.db.mapper.ImageUrlMapper;
 import cn.reghao.dfs.store.model.dto.PathUrl;
-import cn.reghao.dfs.store.model.dto.UploadedFile;
+import cn.reghao.dfs.store.model.dto.UploadingFile;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.dfs.store.model.po.ImageUrl;
 import cn.reghao.dfs.store.model.vo.ImageFileRet;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import cn.reghao.dfs.store.service.FileUploadService;
 import cn.reghao.dfs.store.util.media.ImageOps;
 import cn.reghao.jutil.tool.id.IdGenerator;
@@ -52,11 +52,11 @@ public class ImageFileService {
 
         imageFileMapper.save(imageFile);
         imageUrlMapper.save(imageUrl);
-        return genThumbnail(imageFileId, filePath);
+        return genThumbnail(imageFileId, filePath, url);
     }
 
-    private ImageFileRet genThumbnail(String imageFileId, String filePath) throws Exception {
-        BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath));
+    private ImageFileRet genThumbnail(String imageFileId, String originalPath, String originalUrl) throws Exception {
+        BufferedImage bufferedImage = ImageIO.read(new FileInputStream(originalPath));
         BufferedImage bufferedImage1 = ImageOps.resize(bufferedImage, 4);
 
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -67,18 +67,18 @@ public class ImageFileService {
         long len = imgBytes.length;
         String contentType = "image/jpeg";
         InputStream in = new ByteArrayInputStream(imgBytes);
-        UploadedFile uploadedFile = new UploadedFile(filename, len, contentType, in);
-        UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
+        UploadingFile uploadingFile = new UploadingFile(filename, len, contentType, in);
+        UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
 
-        String uploadId = uploadFileRet.getUploadId();
-        String fileId = uploadFileRet.getFileId();
-        PathUrl pathUrl = uploadFileRet.getPathUrl();
+        String uploadId = uploadedFile.getUploadId();
+        String fileId = uploadedFile.getFileId();
+        PathUrl pathUrl = uploadedFile.getPathUrl();
         String filePath1 = pathUrl.getAbsolutePath();
         ImageOps.Size imgSize = ImageOps.info(new File(filePath1));
 
         ImageUrl imageUrl = new ImageUrl(imageFileId, fileId, imgSize.getWidth(), imgSize.getHeight());
         imageUrlMapper.save(imageUrl);
-        return new ImageFileRet(uploadId, imageFileId, pathUrl.getUrl());
+        return new ImageFileRet(uploadId, imageFileId, pathUrl.getUrl(), originalUrl);
     }
 
     public void saveImage(ImageFile imageFile, List<ImageUrl> imageUrls) {

+ 9 - 9
src/main/java/cn/reghao/dfs/store/service/media/VideoFileService.java

@@ -2,11 +2,11 @@ package cn.reghao.dfs.store.service.media;
 
 import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
 import cn.reghao.dfs.store.model.constant.VideoUrlType;
-import cn.reghao.dfs.store.model.dto.UploadedFile;
+import cn.reghao.dfs.store.model.dto.UploadingFile;
 import cn.reghao.dfs.store.model.po.ImageFile;
 import cn.reghao.dfs.store.model.po.ImageUrl;
 import cn.reghao.dfs.store.model.po.VideoUrl;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import cn.reghao.dfs.store.service.FileUploadService;
 import cn.reghao.dfs.store.util.media.ImageOps;
 import cn.reghao.dfs.store.util.media.VideoOps;
@@ -115,22 +115,22 @@ public class VideoFileService {
         long len = bytes.length;
         String contentType = "image/jpeg";
         InputStream in = new ByteArrayInputStream(bytes);
-        UploadedFile uploadedFile = new UploadedFile(filename, len, contentType, in);
-        UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
+        UploadingFile uploadingFile = new UploadingFile(filename, len, contentType, in);
+        UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
         String imageFileId = idGenerator.getUuid();
 
         ImageFile imageFile = new ImageFile(imageFileId, horizontal);
-        String fileId = uploadFileRet.getFileId();
+        String fileId = uploadedFile.getFileId();
         ImageUrl imageUrl = new ImageUrl(imageFileId, fileId, size.getWidth(), size.getHeight());
         imageFileService.saveImage(imageFile, List.of(imageUrl));
 
-        videoFile.setCoverUrl(uploadFileRet.getPathUrl().getUrl());
+        videoFile.setCoverUrl(uploadedFile.getPathUrl().getUrl());
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public String setVideoCover(String videoFileId, UploadedFile uploadedFile) throws Exception {
-        UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
-        String url = uploadFileRet.getPathUrl().getUrl();
+    public String setVideoCover(String videoFileId, UploadingFile uploadingFile) throws Exception {
+        UploadedFile uploadedFile = fileUploadService.put(uploadingFile);
+        String url = uploadedFile.getPathUrl().getUrl();
         /*videoFile.setCoverUrl(url);
         videoFileMapper.updateSetCover(videoFileId, url);*/
         return url;

+ 16 - 3
src/main/resources/mapper/ImageUrlMapper.xml

@@ -5,7 +5,7 @@
     <insert id="save" useGeneratedKeys="true" keyProperty="id">
         insert into image_url
         (`image_file_id`,`file_id`,`width`,`height`)
-        values 
+        values
         (#{imageFileId},#{fileId},#{width},#{height})
     </insert>
     <insert id="saveAll" useGeneratedKeys="true" keyProperty="id">
@@ -17,7 +17,20 @@
         </foreach>
     </insert>
 
-    <select id="findByImageFileId" resultType="cn.reghao.dfs.store.model.po.ImageUrl">
-        select * from image_url where image_file_id=#{imageFileId}
+    <update id="updateSetUrl">
+        update image_url set url=#{url} where file_id=#{fileId}
+    </update>
+
+    <select id="findAll" resultType="cn.reghao.dfs.store.model.po.ImageUrl">
+        select * from image_url
+    </select>
+
+    <select id="getImageUrls" resultType="java.lang.String">
+        select image_url from mblog_image
+        where image_url not like '%reghao.cn%'
     </select>
+    <update id="updateImageUrl">
+        update mblog_image set image_file_id=#{imageFileId},image_url=#{url}
+        where origin_url=#{originUrl}
+    </update>
 </mapper>

+ 7 - 0
src/main/resources/mapper/VideoUrlMapper.xml

@@ -9,6 +9,13 @@
         (#{videoFileId},#{fileId},#{urlType},#{width},#{height},#{quality},#{bandwidth},#{frameRate})
     </insert>
 
+    <update id="updateSetUrl">
+        update video_url set url=#{url} where file_id=#{fileId}
+    </update>
+
+    <select id="findAll" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
+        select * from video_url
+    </select>
     <select id="findByVideoFileId" resultType="cn.reghao.dfs.api.dto.VideoUrlDto">
         select fileUrl.url,fileUrl.path,videoUrl.url_type as type,videoUrl.width,videoUrl.height,videoUrl.quality
         from video_url videoUrl

+ 109 - 21
src/test/java/ConsistentCheckTest.java

@@ -1,16 +1,18 @@
 import cn.reghao.dfs.store.db.mapper.*;
 import cn.reghao.dfs.store.model.constant.VideoUrlType;
-import cn.reghao.dfs.store.model.dto.UploadedFile;
+import cn.reghao.dfs.store.model.dto.UploadingFile;
+import cn.reghao.dfs.store.model.po.ImageUrl;
 import cn.reghao.dfs.store.model.po.VideoUrl;
-import cn.reghao.dfs.store.model.vo.UploadFileRet;
+import cn.reghao.dfs.store.model.vo.ImageFileRet;
+import cn.reghao.dfs.store.model.dto.UploadedFile;
 import cn.reghao.dfs.store.service.FileUploadService;
+import cn.reghao.dfs.store.service.media.ImageFileService;
 import cn.reghao.dfs.store.service.media.MediaQuality;
-import cn.reghao.jutil.jdk.security.DigestUtil;
+import cn.reghao.jutil.jdk.http.util.UrlFormatter;
 import cn.reghao.dfs.store.DfsStoreApplication;
-import cn.reghao.dfs.store.model.po.FileInfo;
 import cn.reghao.dfs.store.model.po.FileUrl;
-import cn.reghao.dfs.store.util.store.LocalStores;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,9 +21,11 @@ import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.*;
-import java.nio.file.*;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.security.NoSuchAlgorithmException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.Duration;
 import java.util.*;
 
 /**
@@ -34,25 +38,83 @@ import java.util.*;
 @RunWith(SpringRunner.class)
 public class ConsistentCheckTest {
     @Autowired
-    FileInfoMapper fileInfoMapper;
-    @Autowired
-    FileUrlMapper fileUrlMapper;
+    FileUploadService fileUploadService;
     @Autowired
-    FileUserMapper fileUserMapper;
+    ImageFileService imageFileService;
     @Autowired
-    VideoFileMapper videoFileMapper;
+    VideoUrlMapper videoUrlMapper;
     @Autowired
-    ImageFileMapper imageFileMapper;
+    ImageUrlMapper imageUrlMapper;
 
+    HttpClient client = HttpClient.newBuilder()
+            .version(HttpClient.Version.HTTP_1_1)
+            .build();
     @Test
-    public void test() throws IOException {
+    public void test() {
+        List<String> urls = imageUrlMapper.getImageUrls();
+        for (String url : urls) {
+            try {
+                HttpRequest.Builder builder = HttpRequest.newBuilder()
+                        .uri(URI.create(url))
+                        .timeout(Duration.ofSeconds(30))
+                        .GET();
+                HttpResponse<InputStream> streamBody = client.send(builder.build(), HttpResponse.BodyHandlers.ofInputStream());
+                if (streamBody.statusCode() != 200) {
+                    log.error("{} 获取失败", url);
+                    continue;
+                }
+
+                byte[] imageBytes = getBytes(streamBody.body());
+                String filename = UrlFormatter.getFilename(url);
+                long size = imageBytes.length;
+                String contentType = "image/jpeg";
 
+                ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
+                UploadingFile uploadingFile = new UploadingFile(filename, size, contentType, inputStream);
+                UploadedFile fileRet = fileUploadService.put(uploadingFile);
+
+                ImageFileRet imageFileRet = imageFileService.process(fileRet.getFileId(), fileRet.getPathUrl());
+                String imageFileId = imageFileRet.getImageFileId();
+                String url1 = imageFileRet.getThumbnailUrl();
+                imageUrlMapper.updateImageUrl(url, imageFileId, url1);
+                //saveFile(inputStream, new File(String.format("/home/reghao/Downloads/0/%s", filename)));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private void saveFile(InputStream in, File file) throws IOException {
+        File parentDir = file.getParentFile();
+        if (!parentDir.exists()) {
+            FileUtils.forceMkdir(parentDir);
+        }
+
+        FileOutputStream fos = new FileOutputStream(file);
+        // 1MiB
+        int len = 1024*1024;
+        byte[] buf = new byte[len];
+        int readLen;
+        while ((readLen = in.read(buf, 0, len)) != -1) {
+            fos.write(buf, 0, readLen);
+        }
+        fos.close();
+    }
+
+    private byte[] getBytes(InputStream in) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        // 1MiB
+        int len = 1024*1024;
+        byte[] buf = new byte[len];
+        int readLen;
+        while ((readLen = in.read(buf, 0, len)) != -1) {
+            baos.write(buf, 0, readLen);
+        }
+        baos.close();
+        in.close();
+        return baos.toByteArray();
     }
 
-    @Autowired
-    FileUploadService fileUploadService;
-    @Autowired
-    VideoUrlMapper videoUrlMapper;
     @Test
     public void saveLocalVideoFile() throws Exception {
         String videoFileId = "wOdK71938E";
@@ -68,8 +130,8 @@ public class ConsistentCheckTest {
         String contentType = "video/mp4";
         InputStream inputStream = new FileInputStream(file);
 
-        UploadedFile uploadedFile = new UploadedFile(filename, size, contentType, inputStream);
-        UploadFileRet fileRet = fileUploadService.put(uploadedFile);
+        UploadingFile uploadingFile = new UploadingFile(filename, size, contentType, inputStream);
+        UploadedFile fileRet = fileUploadService.put(uploadingFile);
 
         String fileId = fileRet.getFileId();
         int width = 1280;
@@ -79,4 +141,30 @@ public class ConsistentCheckTest {
         VideoUrl videoUrl = new VideoUrl(videoFileId, fileId, VideoUrlType.mp4.getName(), width, height, quality);
         videoUrlMapper.save(videoUrl);
     }
+
+    @Autowired
+    FileUrlMapper fileUrlMapper;
+    @Test
+    public void imgTest() {
+        List<ImageUrl> list = imageUrlMapper.findAll();
+        list.forEach(imageUrl -> {
+            String fileId = imageUrl.getFileId();
+            FileUrl fileUrl = fileUrlMapper.findFileUrl(fileId, 0, 0);
+            String url = fileUrl.getUrl();
+
+            imageUrlMapper.updateSetUrl(fileId, url);
+        });
+    }
+
+    @Test
+    public void vidTest() {
+        List<VideoUrl> list = videoUrlMapper.findAll();
+        list.forEach(videoUrl -> {
+            String fileId = videoUrl.getFileId();
+            FileUrl fileUrl = fileUrlMapper.findFileUrl(fileId, 0, 0);
+            String url = fileUrl.getUrl();
+
+            videoUrlMapper.updateSetUrl(fileId, url);
+        });
+    }
 }

+ 14 - 7
src/test/java/FileTest.java

@@ -1,20 +1,27 @@
-import cn.reghao.dfs.store.util.media.ImageOps;
-import org.hashids.Hashids;
+import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
 import java.io.*;
 
 /**
  * @author reghao
  * @date 2022-06-20 14:31:14
  */
+@Slf4j
 public class FileTest {
-    Hashids hashids = new Hashids("file-id", 8);
-
     @Test
     public void test() throws IOException {
-        String filePath = "/home/reghao/Downloads/1.jpg";
+        String dirPath = "/opt/file/disk0/spider/bili/img/vidcover";
+        File dir = new File(dirPath);
+        for (File file : dir.listFiles()) {
+            if (file.isDirectory()) {
+                continue;
+            }
+
+            long len = file.length();
+            if (len > 1024*1024) {
+                log.error("{} 大小超过 1MiB", file.getAbsolutePath());
+            }
+        }
     }
 }