Browse Source

fix file uploadTemp

tags/B.2.2.0.2_20230923_base
yk 2 years ago
parent
commit
9ddb269d68
7 changed files with 58 additions and 35 deletions
  1. +3
    -0
      xueyi-api/xueyi-api-file/src/main/java/com/xueyi/file/api/feign/RemoteFileService.java
  2. +5
    -0
      xueyi-api/xueyi-api-file/src/main/java/com/xueyi/file/api/feign/factory/RemoteFileFallbackFactory.java
  3. +4
    -31
      xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/config/MinioConfig.java
  4. +5
    -0
      xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/FastDfsSysFileServiceImpl.java
  5. +4
    -2
      xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/ISysFileService.java
  6. +5
    -0
      xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/LocalSysFileServiceImpl.java
  7. +32
    -2
      xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/MinioSysFileServiceImpl.java

+ 3
- 0
xueyi-api/xueyi-api-file/src/main/java/com/xueyi/file/api/feign/RemoteFileService.java View File

@@ -31,6 +31,9 @@ public interface RemoteFileService {
@PostMapping(value = "/inner/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);

@PostMapping(value = "/inner/upload-temp", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
R<SysFile> uploadTemp(@RequestPart(value = "file") MultipartFile file);

/**
* 上传pdf文件
*


+ 5
- 0
xueyi-api/xueyi-api-file/src/main/java/com/xueyi/file/api/feign/factory/RemoteFileFallbackFactory.java View File

@@ -28,6 +28,11 @@ public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileServ
return R.fail("上传文件失败:" + throwable.getMessage());
}

@Override
public R<SysFile> uploadTemp(MultipartFile file) {
return null;
}

@Override
public R<List<SysFile>> uploadPdf(MultipartFile file) {
return R.fail("上传文件失败:" + throwable.getMessage() );


+ 4
- 31
xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/config/MinioConfig.java View File

@@ -1,6 +1,7 @@
package com.xueyi.file.config;

import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -12,6 +13,7 @@ import org.springframework.context.annotation.Configuration;
*/
@Configuration
@ConfigurationProperties(prefix = "minio")
@Data
public class MinioConfig {

/** 服务地址 */
@@ -26,37 +28,8 @@ public class MinioConfig {
/** 存储桶名称 */
private String bucketName;

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getAccessKey() {
return accessKey;
}

public void setAccessKey(String accessKey) {
this.accessKey = accessKey;
}

public String getSecretKey() {
return secretKey;
}

public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}

public String getBucketName() {
return bucketName;
}

public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
/** 临时存储桶名称 */
private String tempBucketName;

@Bean
public MinioClient getMinioClient() {


+ 5
- 0
xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/FastDfsSysFileServiceImpl.java View File

@@ -41,6 +41,11 @@ public class FastDfsSysFileServiceImpl implements ISysFileService {
return domain + "/" + storePath.getFullPath();
}

@Override
public String uploadTempFile(MultipartFile file) throws Exception {
return null;
}

@Override
public String uploadFile(String fileName, File file) throws Exception {
return null;


+ 4
- 2
xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/ISysFileService.java View File

@@ -18,13 +18,15 @@ public interface ISysFileService {
* @return 访问地址
*/
String uploadFile(MultipartFile file) throws Exception;
String uploadTempFile(MultipartFile file) throws Exception;
String uploadFile(String fileName, File file) throws Exception;

/**
* 文件删除接口
*
* @param url 文件地址
* @param fileName 文件名
* @return 结果
*/
Boolean deleteFile(String url) throws Exception;
Boolean deleteFile(String fileName) throws Exception;

}

+ 5
- 0
xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/LocalSysFileServiceImpl.java View File

@@ -40,6 +40,11 @@ public class LocalSysFileServiceImpl implements ISysFileService {
return domain + localFilePrefix + name;
}

@Override
public String uploadTempFile(MultipartFile file) throws Exception {
return null;
}

@Override
public String uploadFile(String fileName, File file) throws Exception {
return null;


+ 32
- 2
xueyi-modules/xueyi-file/src/main/java/com/xueyi/file/service/MinioSysFileServiceImpl.java View File

@@ -4,6 +4,7 @@ import com.xueyi.file.config.MinioConfig;
import com.xueyi.file.utils.FileUploadUtils;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.RemoveObjectArgs;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +60,11 @@ public class MinioSysFileServiceImpl implements ISysFileService {
return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
}

@Override
public String uploadTempFile(MultipartFile file) throws Exception {
return null;
}

@Override
public String uploadFile(String fileName, File file) throws Exception {
fileName = FileUploadUtils.extractFilename(fileName);
@@ -82,6 +88,29 @@ public class MinioSysFileServiceImpl implements ISysFileService {
return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
}


public String uploadTempFile(String fileName, File file) throws Exception {
fileName = FileUploadUtils.extractFilename(fileName);
InputStream inputStream = FileUtils.openInputStream(file);
System.out.println("file original filename = " + fileName);
System.out.println("file size = " + file.length());

// 使用IOUtils.toByteArray()方法确保正确地读取输入流中的数据
byte[] fileBytes = IOUtils.toByteArray(inputStream);

// 上传文件到MinIO
String minioFileName = uploadFileToMinIO(fileName, fileBytes);

System.out.println("MinIO Temp文件上传成功,Minio 文件名:" + minioFileName);

// 获取fileName的最后一个'/'的位置的字符串,并用URLEncoder进行UTF-8编码后,再拼接到fileName中
String splitStr = fileName.substring(fileName.lastIndexOf("/") + 1);
splitStr = URLEncoder.encode(splitStr, "UTF-8");
fileName = fileName.substring(0, fileName.lastIndexOf("/") + 1) + splitStr;

return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
}

// 上传文件到MinIO
private String uploadFileToMinIO(String fileName, byte[] fileBytes) throws Exception {
PutObjectArgs args = PutObjectArgs.builder()
@@ -120,10 +149,11 @@ public class MinioSysFileServiceImpl implements ISysFileService {
/**
* 文件删除接口
*
* @param url 文件地址
* @param fileName 文件名
* @return 结果
*/
public Boolean deleteFile(String url) throws Exception {
public Boolean deleteFile(String fileName) throws Exception {
client.removeObject(RemoveObjectArgs.builder().bucket(minioConfig.getBucketName()).object(fileName).build());
return true;
}
}

Loading…
Cancel
Save