Browse Source

解决知识库文件上传流未关闭引发的异常。

guanz 1 year ago
parent
commit
35371bd43b

+ 18 - 8
src/main/java/com/pavis/backend/slim/framework/minio/MinioStorage.java

@@ -4,14 +4,13 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.pavis.backend.slim.common.constant.Constant;
 import com.pavis.backend.slim.common.exception.UtilException;
-import io.minio.*;
-import io.minio.errors.ErrorResponseException;
-import io.minio.errors.InsufficientDataException;
-import io.minio.errors.InternalException;
-import io.minio.errors.InvalidResponseException;
+import io.minio.BucketExistsArgs;
+import io.minio.GetPresignedObjectUrlArgs;
+import io.minio.MakeBucketArgs;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import io.minio.RemoveObjectArgs;
 import io.minio.errors.MinioException;
-import io.minio.errors.ServerException;
-import io.minio.errors.XmlParserException;
 import io.minio.http.Method;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -79,13 +78,24 @@ public class MinioStorage {
      * @param file  文件input流
      */
     public void putObject(String key, MultipartFile file) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
+        InputStream is = null;
         try {
             // 1. 创建bucket
             createBucket(bucketName);
             // 2. 存储文件
-            client.putObject(PutObjectArgs.builder().bucket(bucketName).object(key).stream(file.getInputStream(), file.getSize(), -1).build());
+            is = file.getInputStream();
+            client.putObject(PutObjectArgs.builder().bucket(bucketName).object(key).stream(is, file.getSize(), -1).build());
         } catch (MinioException e) {
             throw new UtilException(e.getMessage());
+        }finally {
+            if (is != null){
+                try {
+                    is.close();
+                }catch (IOException ex){
+                    ex.printStackTrace();
+                    log.info("上传文件至指定bucket或指定文件夹 ex:{}",ex);
+                }
+            }
         }
     }
 

+ 2 - 1
src/main/java/com/pavis/backend/slim/project/system/service/impl/SysFileServiceImpl.java

@@ -140,6 +140,7 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
             try (InputStream is = file.getInputStream()) {
                 sysFile.setIdentifier(MD5.create().digestHex16(is));
             } catch (IOException e) {
+                log.info("文件流获取异常 e:{}",e);
                 throw new ServiceException("文件流获取失败!");
             }
             // 存储到minio
@@ -451,7 +452,7 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
                     // log.info("实时请求算法获取解析结果 convertToTxtResTmp:{}",convertToTxtResTmp);
                     // dealAlgTxtRes(convertToTxtResTmp);
 
-                    // todo 实时调用算法获取解析得txt文本内容,。
+                    // todo ghjghj 需要和志超对接 实时调用算法获取解析得txt文本内容,。
                     String convertToTxtResTmp = algKgTestClient.testConvertToTxt(JSON.toJSONString(algMap),new Request.Options(30, TimeUnit.SECONDS, 30, TimeUnit.SECONDS, true));
                     log.info("实时请求算法获取解析结果 convertToTxtResTmp:{}",convertToTxtResTmp);
                     dealAlgTxtRes(convertToTxtResTmp);