package com.manageSystem.common.utils; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.PutObjectResult; import com.aliyun.oss.model.UploadFileRequest; import com.aliyun.oss.model.UploadFileResult; import com.manageSystem.framework.web.domain.AjaxResult; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.xml.crypto.Data; import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.URL; import java.nio.charset.Charset; import java.text.DecimalFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * * @author cky * 代码来源阿里官网 * 略有改动 */ @Component public class OssFileUpload { @Value("${oss.endPoint}") String endpoint; @Value("${oss.accessKeyId}") String accessKeyId = "yourAccessKeyId"; @Value("${oss.accessKeySecret}") String accessKeySecret = "yourAccessKeySecret"; @Value("${oss.bucketName}") String bucketName ; public List<URL> upload(MultipartFile[] files) throws IOException { MultipartEntityBuilder builder = MultipartEntityBuilder.create(); DecimalFormat df = new DecimalFormat("#.##"); HttpEntity multipart = builder.build(); // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { List<URL> list = new ArrayList<>(); for(MultipartFile multipartFile : files) { String objectName = LocalDate.now()+"/" +multipartFile.getOriginalFilename(); PutObjectResult putObjectResult = ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(multipartFile.getBytes())); Date date = new Date(System.currentTimeMillis()+1000*60*60*24*7); URL url = ossClient.generatePresignedUrl(bucketName, objectName,date ); list.add(url); } return list; } catch (OSSException oe) { oe.printStackTrace(); } catch (ClientException ce) { ce.printStackTrace(); } catch (Throwable throwable) { throwable.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } return null; } public String getSuffix(final MultipartFile file) { if (file == null || file.getSize() == 0) { return null; } String fileName = file.getOriginalFilename(); return fileName.substring(fileName.lastIndexOf(".") + 1);
} }
@ApiOperation("OSS文件上传") @PostMapping(value = "/common/oss/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public AjaxResult uploadFile2(@RequestPart("file") MultipartFile[] file) { try { List<URL> upload = ossFileUpload.upload(file); return AjaxResult.success(upload); }catch (Exception e){e.printStackTrace();} return AjaxResult.error("oss上传失败"); }
本文来自博客园,作者:狂躁的键盘,转载请注明原文链接:https://www.cnblogs.com/wangweiip/p/16952925.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具