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

+ 1 - 1
src/main/java/cn/reghao/dfs/store/controller/ObjectBasicController.java

@@ -69,7 +69,7 @@ public class ObjectBasicController {
 
 
     @ApiOperation("获取对象的元数据")
     @ApiOperation("获取对象的元数据")
     @RequestMapping(value = "/**", method = RequestMethod.HEAD)
     @RequestMapping(value = "/**", method = RequestMethod.HEAD)
-    public String headObject() {
+    public String headObject() throws IOException {
         String uri = ServletUtil.getRequest().getRequestURI();
         String uri = ServletUtil.getRequest().getRequestURI();
         String uri1 = URLDecoder.decode(uri, StandardCharsets.UTF_8);
         String uri1 = URLDecoder.decode(uri, StandardCharsets.UTF_8);
 
 

+ 1 - 0
src/main/java/cn/reghao/dfs/store/db/mapper/FileMetaMapper.java

@@ -19,6 +19,7 @@ public interface FileMetaMapper extends BaseMapper<FileMeta> {
     FileMeta findBySha256sum(String sha256sum);
     FileMeta findBySha256sum(String sha256sum);
     FileMeta findByObjectName(String objectName);
     FileMeta findByObjectName(String objectName);
     HeadObjectResult findByObjectName1(String objectName);
     HeadObjectResult findByObjectName1(String objectName);
+    List<FileMeta> findAll0(@Param("bucket") String bucket, @Param("max") Integer max, @Param("regex") String regex);
     List<FileMeta> findAll1(@Param("bucket") String bucket, @Param("prefix") String prefix, @Param("max") Integer max);
     List<FileMeta> findAll1(@Param("bucket") String bucket, @Param("prefix") String prefix, @Param("max") Integer max);
     List<FileMeta> findAll2(@Param("bucket") String bucket, @Param("prefix") String prefix,
     List<FileMeta> findAll2(@Param("bucket") String bucket, @Param("prefix") String prefix,
                             @Param("start") String start, @Param("max") Integer max);
                             @Param("start") String start, @Param("max") Integer max);

+ 3 - 1
src/main/java/cn/reghao/dfs/store/rpc/ObjectServiceImpl.java

@@ -50,8 +50,10 @@ public class ObjectServiceImpl implements ObjectService {
 
 
         int count = fileMetaMapper.count();
         int count = fileMetaMapper.count();
         List<FileMeta> list;
         List<FileMeta> list;
+        StringBuilder regex = new StringBuilder();
+        regex.append("^").append(prefix).append("([^/])+/?$");
         if (startAfter.isBlank()) {
         if (startAfter.isBlank()) {
-            list = fileMetaMapper.findAll1(bucket, prefix, maxKeys);
+            list = fileMetaMapper.findAll0(bucket, maxKeys, regex.toString());
         } else {
         } else {
             list = fileMetaMapper.findAll2(bucket, prefix, startAfter, maxKeys);
             list = fileMetaMapper.findAll2(bucket, prefix, startAfter, maxKeys);
         }
         }

+ 14 - 1
src/main/java/cn/reghao/dfs/store/service/ObjectBasicService.java

@@ -119,7 +119,20 @@ public class ObjectBasicService {
     public void postObject() {
     public void postObject() {
     }
     }
 
 
-    public void headObject(String objectName) {
+    public void headObject(String objectName) throws IOException {
+        HttpServletResponse response = ServletUtil.getResponse();
+        FileMeta fileMeta = fileMetaMapper.findByObjectName(objectName);
+        if (fileMeta == null) {
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+
+            OutputStream outputStream = response.getOutputStream();
+            outputStream.flush();
+            outputStream.close();
+            return;
+        }
+
+        String objectId = fileMeta.getObjectId();
+
     }
     }
 
 
     public void getObject(String objectName) throws IOException {
     public void getObject(String objectName) throws IOException {

+ 1 - 1
src/main/resources/application.yml

@@ -33,6 +33,6 @@ mybatis:
   configuration:
   configuration:
     map-underscore-to-camel-case: true
     map-underscore-to-camel-case: true
     # TODO mybatis sql 执行日志
     # TODO mybatis sql 执行日志
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
   mapper-locations: classpath*:mapper/**/**.xml
   mapper-locations: classpath*:mapper/**/**.xml
   type-aliases-package: cn.reghao.dfs.store.model.po
   type-aliases-package: cn.reghao.dfs.store.model.po

+ 7 - 0
src/main/resources/mapper/oss/FileMetaMapper.xml

@@ -29,6 +29,13 @@
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.FileMeta">
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.FileMeta">
         select * from file_meta
         select * from file_meta
     </select>
     </select>
+    <select id="findAll0" resultType="cn.reghao.dfs.store.model.po.FileMeta">
+        select file_meta.* from file_meta
+        inner join bucket
+        on bucket.name=#{bucket}
+        and object_name regexp #{regex}
+        limit #{max}
+    </select>
     <!-- TODO ${prefix} 和 #{prefix} 的区别 -->
     <!-- TODO ${prefix} 和 #{prefix} 的区别 -->
     <select id="findAll1" resultType="cn.reghao.dfs.store.model.po.FileMeta">
     <select id="findAll1" resultType="cn.reghao.dfs.store.model.po.FileMeta">
         select file_meta.* from file_meta
         select file_meta.* from file_meta