3 changed files with 95 additions and 4 deletions
			
			
		@ -0,0 +1,50 @@ | 
				
			|||||||
 | 
					package com.hnac.hzinfo.inspect.task.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzinfo.exception.HzServiceException; | 
				
			||||||
 | 
					import com.hnac.hzinfo.inspect.utils.FileUtil; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springblade.core.oss.model.BladeFile; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.ResultCode; | 
				
			||||||
 | 
					import org.springblade.resource.feign.IOssClient; | 
				
			||||||
 | 
					import org.springframework.mock.web.MockMultipartFile; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					import org.springframework.util.Assert; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: huangxing | 
				
			||||||
 | 
					 * @Date: 2024/08/13 19:44 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					public class FileUploaderService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IOssClient ossClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * minio上传文件 | 
				
			||||||
 | 
					     * @param url 待上传文件url | 
				
			||||||
 | 
					     * @param fileName 上传图片名称 | 
				
			||||||
 | 
					     * @return 上传结果 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public BladeFile upload(String url,String fileName) { | 
				
			||||||
 | 
					        MockMultipartFile file = FileUtil.urlToMultipartFile(url, fileName); | 
				
			||||||
 | 
					        return this.upload(file); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * minio上传文件 | 
				
			||||||
 | 
					     * @param file 待上传文件 | 
				
			||||||
 | 
					     * @return 上传结果 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public BladeFile upload(MockMultipartFile file) { | 
				
			||||||
 | 
					        R<BladeFile> result = ossClient.putFile(file); | 
				
			||||||
 | 
					        Assert.isTrue(result.isSuccess(), () -> { | 
				
			||||||
 | 
					            throw new HzServiceException(ResultCode.FAILURE,"文件上传失败!"); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					        return result.getData(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,42 @@ | 
				
			|||||||
 | 
					package com.hnac.hzinfo.inspect.utils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.http.HttpRequest; | 
				
			||||||
 | 
					import cn.hutool.http.HttpResponse; | 
				
			||||||
 | 
					import com.hnac.hzinfo.exception.HzServiceException; | 
				
			||||||
 | 
					import org.springblade.core.oss.model.BladeFile; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.IResultCode; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.ResultCode; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.SpringUtil; | 
				
			||||||
 | 
					import org.springblade.resource.feign.IOssClient; | 
				
			||||||
 | 
					import org.springframework.mock.web.MockMultipartFile; | 
				
			||||||
 | 
					import org.springframework.util.Assert; | 
				
			||||||
 | 
					import org.springframework.web.client.RestTemplate; | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.ByteArrayInputStream; | 
				
			||||||
 | 
					import java.io.InputStream; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: huangxing | 
				
			||||||
 | 
					 * @Date: 2024/08/13 11:32 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class FileUtil { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static MockMultipartFile urlToMultipartFile(String url, String fileName) { | 
				
			||||||
 | 
					        HttpResponse response = HttpRequest.get(url).execute(); | 
				
			||||||
 | 
					        if (response.isOk()) { | 
				
			||||||
 | 
					            // 读取响应体为字节数组
 | 
				
			||||||
 | 
					            byte[] fileBytes = response.bodyBytes(); | 
				
			||||||
 | 
					            // 使用字节数组、文件名和MIME类型创建MockMultipartFile
 | 
				
			||||||
 | 
					            return new MockMultipartFile( | 
				
			||||||
 | 
					                    "file", // 表单字段名,这通常与你的Spring MVC控制器中的@RequestParam("file")匹配
 | 
				
			||||||
 | 
					                    fileName, // 文件名
 | 
				
			||||||
 | 
					                    "image/jpeg", // MIME类型
 | 
				
			||||||
 | 
					                    fileBytes // 文件内容字节数组
 | 
				
			||||||
 | 
					            ); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return null; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue