文件上传
This commit is contained in:
parent
3e93c9e0a2
commit
3a46ad74a2
@ -161,4 +161,20 @@ public class CommonController
|
||||
log.error("下载文件失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/uploadMinio")
|
||||
public AjaxResult uploadFileMinio(MultipartFile file) throws Exception{
|
||||
try{
|
||||
String fileName = FileUploadUtils.uploadMinio(file);
|
||||
AjaxResult rt = AjaxResult.success();
|
||||
rt.put("url",fileName);
|
||||
rt.put("fileName",fileName);
|
||||
rt.put("newFileName",FileUtils.getName(fileName));
|
||||
rt.put("originalFileName",file.getOriginalFilename());
|
||||
return rt;
|
||||
}catch (Exception e){
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -131,6 +131,12 @@
|
||||
<version>5.8.0.M3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
<artifactId>minio</artifactId>
|
||||
<version>8.2.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,80 @@
|
||||
package com.ktg.common.config;
|
||||
|
||||
import io.minio.MinioClient;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* Minio 配置信息
|
||||
*
|
||||
*/
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "minio")
|
||||
public class MinioConfig {
|
||||
/**
|
||||
* 服务地址
|
||||
*/
|
||||
private static String url;
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private static String accessKey;
|
||||
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
private static String secretKey;
|
||||
|
||||
/**
|
||||
* 存储桶名称
|
||||
*/
|
||||
private static String bucketName;
|
||||
|
||||
public static String getUrl()
|
||||
{
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url)
|
||||
{
|
||||
MinioConfig.url = url;
|
||||
}
|
||||
|
||||
public static String getAccessKey()
|
||||
{
|
||||
return accessKey;
|
||||
}
|
||||
|
||||
public void setAccessKey(String accessKey)
|
||||
{
|
||||
MinioConfig.accessKey = accessKey;
|
||||
}
|
||||
|
||||
public static String getSecretKey()
|
||||
{
|
||||
return secretKey;
|
||||
}
|
||||
|
||||
public void setSecretKey(String secretKey)
|
||||
{
|
||||
MinioConfig.secretKey = secretKey;
|
||||
}
|
||||
|
||||
public static String getBucketName()
|
||||
{
|
||||
return bucketName;
|
||||
}
|
||||
|
||||
public void setBucketName(String bucketName)
|
||||
{
|
||||
MinioConfig.bucketName = bucketName;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MinioClient getMinioClient()
|
||||
{
|
||||
return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
|
||||
}
|
||||
}
|
@ -1,9 +1,14 @@
|
||||
package com.ktg.common.utils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.net.URLDecoder;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import com.ktg.common.constant.Constants;
|
||||
import org.springframework.web.context.request.RequestAttributes;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
@ -143,4 +148,41 @@ public class ServletUtils
|
||||
String ajax = request.getParameter("__ajax");
|
||||
return StringUtils.inStringIgnoreCase(ajax, "json", "xml");
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容编码
|
||||
*
|
||||
* @param str 内容
|
||||
* @return 编码后的内容
|
||||
*/
|
||||
public static String urlEncode(String str)
|
||||
{
|
||||
try
|
||||
{
|
||||
return URLEncoder.encode(str, Constants.UTF8);
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容解码
|
||||
*
|
||||
* @param str 内容
|
||||
* @return 解码后的内容
|
||||
*/
|
||||
public static String urlDecode(String str)
|
||||
{
|
||||
try
|
||||
{
|
||||
return URLDecoder.decode(str, Constants.UTF8);
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import java.io.IOException;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.ktg.common.config.MinioConfig;
|
||||
import com.ktg.common.config.RuoYiConfig;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@ -48,6 +49,17 @@ public class FileUploadUtils
|
||||
return defaultBaseDir;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Minio默认上传的地址
|
||||
*/
|
||||
private static String bucketName = MinioConfig.getBucketName();
|
||||
|
||||
public static String getBucketName()
|
||||
{
|
||||
return bucketName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以默认配置进行文件上传
|
||||
*
|
||||
@ -118,6 +130,67 @@ public class FileUploadUtils
|
||||
return getPathFileName(baseDir, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 以默认BucketName配置上传到Minio服务器
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 文件名称
|
||||
* @throws Exception
|
||||
*/
|
||||
public static final String uploadMinio(MultipartFile file) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
return uploadMinino(getBucketName(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义bucketName配置上传到Minio服务器
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 文件名称
|
||||
* @throws Exception
|
||||
*/
|
||||
public static final String uploadMinio(MultipartFile file, String bucketName) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
return uploadMinino(bucketName, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private static final String uploadMinino(String bucketName, MultipartFile file, String[] allowedExtension)
|
||||
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
|
||||
InvalidExtensionException
|
||||
{
|
||||
int fileNamelength = file.getOriginalFilename().length();
|
||||
if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
|
||||
{
|
||||
throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
|
||||
}
|
||||
assertAllowed(file, allowedExtension);
|
||||
try
|
||||
{
|
||||
String fileName = extractFilename(file);
|
||||
String pathFileName = MinioUtil.uploadFile(bucketName, fileName, file);
|
||||
return pathFileName;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 编码文件名
|
||||
*/
|
||||
|
@ -0,0 +1,38 @@
|
||||
package com.ktg.common.utils.file;
|
||||
|
||||
import com.ktg.common.utils.ServletUtils;
|
||||
import com.ktg.common.utils.spring.SpringUtils;
|
||||
import io.minio.GetPresignedObjectUrlArgs;
|
||||
import io.minio.MinioClient;
|
||||
import io.minio.PutObjectArgs;
|
||||
import io.minio.http.Method;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class MinioUtil {
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
* @param bucketName 桶名称
|
||||
* @param fileName
|
||||
* @throws IOException
|
||||
*/
|
||||
public static String uploadFile(String bucketName, String fileName, MultipartFile multipartFile) throws IOException
|
||||
{
|
||||
String url = "";
|
||||
MinioClient minioClient = SpringUtils.getBean(MinioClient.class);
|
||||
try (InputStream inputStream = multipartFile.getInputStream())
|
||||
{
|
||||
minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(inputStream, multipartFile.getSize(), -1).contentType(multipartFile.getContentType()).build());
|
||||
url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(fileName).method(Method.GET).build());
|
||||
url = url.substring(0, url.indexOf('?'));
|
||||
return ServletUtils.urlDecode(url);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user