本文将讲述如何使用Java代码上传文件到阿里云中,阿里云存储文件方便项目上线后的文件访问和存储,因为上线后就不能用本地进行存储了,后续的代码都在maven工程中进行编写的,当然使用SpringBoot工程也可以完成

使用步骤:

1.打开阿里云网站  https://www.aliyun.com/

2.注册阿里云账号

3.找到阿里云oss对象存储,立即开通

4.创建Bucket

5.上传文件即可

Java代码操作阿里云oss

1.上传文件到阿里云oss操作

1.准备工作:创建操作阿里云oss的许可证

找到Access Key并进行创建,然后保存好ID和密钥方便下一步操作

2.在idea中已入以下依赖进行SDK的安装

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.2</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-ecs</artifactId><version>4.17.6</version>
</dependency>

3.编写application.properties配置文件

其中最后四条要按照自己的实际写

第一个为:你的bucket的区域id,第二个为你的bucket的ID,第三个为密钥,最后一个bucket名称

#服务端口
server.port=8002
#服务名
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=LTAI5tHb7RDmsLkRoUvVu2ik
aliyun.oss.file.keysecret=vf0sNHTfj14Q3ZhrJk9JyG8PtRFg9x
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=renyi-1997

4.创建工具类从application.properties配置文件中读取内容

package com.atguigu.oss.utils;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;}
}

5.创建controller类,设置访问地址调用service类

以下代码的controller和service需要创建controller和service包,且在同一个包下

其中的返回值类型可以写一个String类型,并返回成功即可

我这个是提前创建了一个返回类的提示工具类R,其他代码都一致

package com.atguigu.oss.controller;import com.atguigu.commonutils.R;
import com.atguigu.oss.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
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;@CrossOrigin
@RestController
@RequestMapping("/eduoss/fileoss")
public class OssController {@Autowiredprivate OssService ossService;@PostMappingpublic R uploadOssFile(MultipartFile file){//获取上传文件//返回上传oss路径String url = ossService.uploadFileAavatar(file);return R.ok().data("url", url);}
}

6.创建service接口

package com.atguigu.oss.service;import org.springframework.web.multipart.MultipartFile;public interface OssService {String uploadFileAavatar(MultipartFile file);
}

7.创建service的实现类

此实现类是实现文件上传的主要业务代码

package com.atguigu.oss.service.impl;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.atguigu.oss.service.OssService;
import com.atguigu.oss.utils.ConstantPropertiesUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;@Service
public class OssServiceImpl implements OssService {//上传头像到oss@Overridepublic String uploadFileAavatar(MultipartFile file) {String endpoint = ConstantPropertiesUtil.END_POINT;String accessKeyId = ConstantPropertiesUtil.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtil.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtil.BUCKET_NAME;try {//创建ossClinet实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//上传文件流InputStream inputStream = file.getInputStream();//获取文件名称String filename = file.getOriginalFilename();//调用oss方法实现上传//1.第一个参数为bucket名称  第二个为文件路径和文件名称  第三个为上传文件的输入流ossClient.putObject(bucketName, filename,inputStream);ossClient.shutdown();//把上传文件的路径进行返回 https://renyi-1997.oss-cn-beijing.aliyuncs.com/888.jpg?versionId=nullString url = "https://"+bucketName+"."+endpoint+"/"+filename;return url;} catch (IOException e) {e.printStackTrace();}return null;}
}

8.创建启动类(要在service与controller包的父包中创建,也就是我这里的com.atguigu.oss包下)

package com.atguigu.oss;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(basePackages = {"com.atguigu"})
public class OssApplication {public static void main(String[] args) {SpringApplication.run(OssApplication.class, args);}
}

上传文件到阿里云就可以实现了,在项目中要结合前端上传文件使用,这里可以用swagger进行测试

头像上传(阿里云oss存储服务)相关推荐

  1. spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)

    代码实现请看下一篇: spring boot上传阿里云对象存储OSS快速上手(二.代码实现,复制粘贴可用) 简介: 1.阿里云对象存储OSS其实就是一个文件存储的服务 2.在我们的开发过程中会遇到类似 ...

  2. 上传阿里云oss对象型存储 本地文件和上传流上传

    上传阿里云oss对象型存储 本地文件和上传流上传 import java.io.ByteArrayInputStream; import java.io.File; import java.io.Fi ...

  3. java利用iText写pdf并上传阿里云OSS并下载

    iText是用于生成pdf的一个类库,通过它可以生成pdf或者将XML , HTML转换城pdf模版:阿里云的oss对象存储存储的类型比较多了,可以存储音频 图片 pdf excel 等资源,oss本 ...

  4. NetCore多图片批量上传阿里云OSS,代码可以直接拿过来用

    背景 图片上传功能是web开发必不可少的功能.图片上传到哪里其实都是一个非常头疼的事情,多个文件源各种地址组合,经常会出现图片地址错误问题.自从前后端分离.小程序.app成为流行后,大家一般都会将文件 ...

  5. 文件分片上传阿里云OSS

    本文参考其他博客并结合自身编写 博客原作者:程序猿谢哥哥 博客原地址:https://blog.csdn.net/weixin_42825651/article/details/108792264 注 ...

  6. 微信 开发 图片 上传 阿里云 oss 服务器

    在做微信开发时,我需要将图片上传至阿里云OSS,思路是服务端下载微信图片再转存至OSS. wx.chooseImage({count: 1, // 默认9sizeType: ['original', ...

  7. 微信小程序上传阿里云OSS,返回204,400,403,405,解决方案

    目录 微信小程序上传阿里云 ==OSSAccessKeyId,policy,signature==如何获取呢? 配置Bucket跨域访问 配置外网域名到小程序的域名白名单 上传报错(返回400,403 ...

  8. 前端不暴露ak/sk直接上传阿里云oss的方案

    需求起因 以前写过一篇文章:前端不暴露ak/sk直接上传aws S3的方案 因为项目里还用到的阿里云的oss上传,就研究了阿里云是不是也有避免ak/sk泄露到前端的方案, 这里也复述一下这么做的原因: ...

  9. Vue上传阿里云OSS(STS方式)

    一.准备工作 1. 开通阿里云OSS服务,从控制台上获取AccessKeyId和AccessKeySecret. 2. 创建Bucket,并登录OSS控制台 3. 配置Bucket (很重要) 将al ...

最新文章

  1. JavaScript学习笔记—— 4. 变量、作用域和内存问题
  2. Powershell记录2
  3. λ表达式_Java 8新特性:学习如何使用Lambda表达式,一看必懂
  4. DispatcherCore ,一个WPF异步操作常用功能库
  5. enum in c language
  6. [html] 在H5中如何预加载音频?
  7. Django--模板语言
  8. 发电机机房设计规范_柴油发电机的容量怎么选择!发电机机房如何合理设计?来涨知识!...
  9. SHELL中变量字串中包含$时怎么办?
  10. 大喇叭疫情防控广播解决方案
  11. matlab 均匀设计编程,均匀设计均匀设计表--方开泰.doc
  12. PostgreSQL遍历Json
  13. VirtualBoX下linux中安装增强功能
  14. 声学测试软件ios,只需要 iPhone 就能进行声学测量,AcoustiTools 用 AR 帮你解决大声场环境的听感问题...
  15. 百度官方的6个SEO建议
  16. 用winpcap实现局域网DNS欺骗之一(基础知识)
  17. Matlab 彩色图片直方图均衡化处理 line()函数实现
  18. PMS权限管理和鉴权过程
  19. html无法访问页面,为什么网页无法访问?
  20. 微信公众号 语音转文字api_有没有语音转文字的APP?

热门文章

  1. 浅谈基于SSM框架的权限管理(代码)
  2. Altium Designer PCB界面中的对象捕捉快捷键shift+E
  3. 【CUDA】CUDA9.0+VS2017+win10详细配置
  4. win10安装cuda9.0,cudann
  5. 短语,简单短语,句柄的区别
  6. python用post提交数据_python通过post提交数据的方法
  7. 关于打印机服务器的驱动安装总结
  8. android.view.inflateexception binary xml file line 异常的解决方法
  9. 5分钟带你了解音视频开发
  10. 关于keil 官网下载芯片包速度太慢的问题