欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 阿里云图片文件上传

阿里云图片文件上传

2024/10/25 1:28:05 来源:https://blog.csdn.net/weixin_45766875/article/details/140636213  浏览:    关键词:阿里云图片文件上传

一,官网地址

https://help.aliyun.com/document_detail/84781.html

一切依据于官网

二,导入依赖

<dependencies><!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>
</dependencies>

三,创建配置文件

#服务端口
server.port=8205
#服务名
spring.application.name=service-oss#环境设置:dev、test、prod
spring.profiles.active=dev#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=your accessKeyId
aliyun.oss.file.keysecret=your accessKeySecret
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=guli-file

四创建启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan("com.atguigu")
public class OssApplication {public static void main(String[] args) {SpringApplication.run(OssApplication.class,args);}
}

五,创建常量类

由于环境的不同,配置需要变化,因此需要将配置文件变为软编码而不是写在硬编码里面,耦合性较高

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class ConstantPropertiesUtil implements InitializingBean {@Value("${aliyun.oss.file.endpoint}")private String endpoint;@Value("${aliyun.oss.file.keyid}")private String keyId;@Value("${aliyun.oss.file.keysecret}")private String keySecret;@Value("${aliyun.oss.file.bucketname}")private String bucketName;public static String END_POINT;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POINT = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;}
}

六,创建controller→service


import com.atguigu.yygh.common.R;
import com.atguigu.yygh.oss.service.OssService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@Api(tags = "文件上传接口")
@RestController
@RequestMapping("/admin/oss/file")
public class OssController {@Autowiredprivate OssService ossService;/*** @Description: 上传文件* @return:  文件的url* @param:文件流* @author: Mr zhan*/@ApiOperation("上传图片到阿里云")@PostMapping("upload")public R upload(MultipartFile file) {//传递到serviceString fileUrl=ossService.upload(file);return R.ok().data("file",fileUrl);}
}
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.atguigu.yygh.oss.service.OssService;
import com.atguigu.yygh.oss.util.ConstantPropertiesUtil;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;@Service
public class OssServiceImpl implements OssService {/*** @Description: 上传文件* @return:  文件的url* @param:文件流* @author: Mr zhan*/@Overridepublic String upload(MultipartFile file) {//1.获取文件的名称String filename = file.getOriginalFilename();//2.准备参数//地域结点String endpoint=ConstantPropertiesUtil.END_POINT;//唯一idString accessKeyId=ConstantPropertiesUtil.ACCESS_KEY_ID;//id的对应的唯一secretString accessKeySecret=ConstantPropertiesUtil.ACCESS_KEY_SECRET;//存储桶String bucketName=ConstantPropertiesUtil.BUCKET_NAME;//文件存储的路径//   String objectName="用下面的filename代替";//3.创建客户端OSS ossClient= new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);String uuid = UUID.randomUUID().toString().replaceAll("-","");filename=uuid+filename;//4.由于真实的开发需要,方便运营,因此需要分类格式如下:  2022/03/05/图片名称SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");String month = format.format(new Date());filename=month+"/"+filename;//上传try {ossClient.putObject(bucketName,filename,file.getInputStream());} catch (IOException e) {e.printStackTrace();}finally {//关闭资源ossClient.shutdown();}return "https://"+bucketName+"."+endpoint+"/"+filename;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com