第一步:引入oss maven坐标

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>

第二步:上传工具类

package com.green.testlocalhost.service;import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.PutObjectResult;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;/*** @author zdj* @Description: 阿里云 oss 上传工具类* @Date: 2019/5/10*/
@Slf4j
@Data
@Component
public class OssUtil {private static String endPoint = "yourEndPoint";                          // oss域名private static String accessKeyId = "yourAccessKeyId";                    // accessKeyIdprivate static String accessKeySecret = "yourAccessKeySecret";            // accessKeySecretprivate static String bucketName = "yourBucketName";                      // 桶名称private static String fileDir = "animal/";                                // 当前文件所属文件夹(就是你想给文件传到那个文件夹下面)/*** oss 工具客户端*/private static OSSClient ossClient = null;/*** 上传文件至阿里云 OSS* @param file 待上传文件* 返回访问的全路径*/public static String uploadFileToOss(MultipartFile file) {// 初始化ossinitOSS(endPoint, accessKeyId, accessKeySecret);String visitUrl = null;try {// 获取文件名String orgName = file.getOriginalFilename();if (StringUtils.isEmpty(orgName)) {orgName = file.getName();}orgName = getFileName(orgName);String fileRelName = fileDir + orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));// 上传至ossPutObjectResult result = ossClient.putObject(bucketName, fileRelName, file.getInputStream());if (result != null) {log.info("------OSS文件上传成功------");}// 拼接访问路径visitUrl = "https://" + bucketName + "." + endPoint + "/" + fileRelName;} catch (IOException e) {log.error(e.getMessage(), e);return null;}return visitUrl;}/*** 删除文件* @param fileName*/public static void deleteFileToOss(String fileName) {ossClient.deleteObject(bucketName, fileName);}/*** 初始化 oss 客户端* @return*/private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {if (ossClient == null) {synchronized (OSSClient.class) {if (ossClient == null) {ossClient = new OSSClient(endpoint, new DefaultCredentialProvider(accessKeyId, accessKeySecret), new ClientConfiguration());// 设置权限(公开读)ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);}}}return ossClient;}/*** 判断文件名是否带盘符,重新处理* @param fileName* @return*/public static String getFileName(String fileName){//判断是否带有盘符信息// Check for Unix-style pathint unixSep = fileName.lastIndexOf('/');// Check for Windows-style pathint winSep = fileName.lastIndexOf('\\');// Cut off at latest possible pointint pos = (winSep > unixSep ? winSep : unixSep);if (pos != -1) {// Any sort of path separator found...fileName = fileName.substring(pos + 1);}//替换上传文件名字的特殊字符fileName = fileName.replace("=", "").replace(",", "").replace("&", "").replace("#", "");return fileName;}
}

第三步:实用controller

package com.green.testlocalhost.controller;import com.green.testlocalhost.service.OssService;
import com.green.testlocalhost.vo.ResultData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;/*** @Author zdj* @Date 2022/10/28 17:11* @Version 1.0*/
@Api(tags = "文件管理")
@RestController
@RequestMapping("/file")
public class OssController {/*** oss服务类**/@Autowiredprivate OssService ossService;/*** 图片上传,返回地址* @param file* @return*/@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)@ApiOperation(value = "图片上传接口(返回地址)", notes = "图片上传接口(返回地址)", httpMethod = "POST")public ResultData fileUpload(@RequestParam(value = "file", required = false) @RequestPart("file") MultipartFile file) throws IOException {if (file.getBytes() == null) {return ResultData.error("文件不能为空!");}return ossService.fileUpload(file);}
}

第四步: 实用service类

package com.green.testlocalhost.service;import com.green.testlocalhost.vo.ResultData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;/*** @Author zdj* @Date 2022/10/28 17:22* @Version 1.0*/
@Service
public class OssService {/*** oss服务类**/@Autowiredprivate OssUtil ossBootUtil;/*** 图片上传,返回地址* @param file* @return*/public ResultData fileUpload(MultipartFile file) {String upload = ossBootUtil.uploadFileToOss(file);return ResultData.ok("成功", upload);}
}

第五步:响应类ResultData

package com.green.testlocalhost.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** @Author zdj* @Date 2022/10/28 17:24* @Version 1.0*/
@Data
public class ResultData<T> {public static final int CODE_SUCCESS = 200;//成功public static final int CODE_ERROR = 500;  //业务异常public static final int CODE_EXP = 900;    //服务器内部错误// 响应数据@ApiModelProperty(value = "响应数据", required = true)private T data;// 响应消息@ApiModelProperty(value = "响应消息", required = true)private String msg;// 状态@ApiModelProperty(value = "响应状态", required = true)private int code;public ResultData() {}public ResultData(int code, String msg, T data) {this.code = code;this.msg = msg;this.data = data;}/***  用于写出去响应给浏览器的公告方法**/public static <T> ResultData<T> ok(Integer code, String msg, T data) {ResultData<T> responseData = new ResultData<T>();responseData.setCode(code);responseData.setMsg(msg);responseData.setData(data);return responseData;}/***  响应成功**/public static <T> ResultData<T> ok(String msg, T data) {return ResultData.ok(ResultData.CODE_SUCCESS, msg, data);}/***  响应失败**/public static <T> ResultData<T> error(String msg) {return ResultData.ok(ResultData.CODE_ERROR, msg, null);}/***  服务器错误**/public static <T> ResultData<T> exp() {return ResultData.ok(ResultData.CODE_EXP, "服务器繁忙,请稍后再试", null);}
}

第六步:调用测试下

当前工具只是简单的文件上传,需要实现更多的功能,请自行扩展哦!

java上传文件至阿里云oss工具类相关推荐

  1. 微信小程序直接上传文件到阿里云OSS组件封装

    微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...

  2. 上传文件到阿里云OSS对象存储,查询访问地址,删除文件

    一:pom添加以来jar <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun ...

  3. 【微信小程序】上传文件到阿里云OSS

    小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS 步骤1:配置Bucket跨域访问 客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请 ...

  4. 小程序上传文件到阿里云oss

    本文仅举例上传图片和上传视频! 准备工作: 需要引入的js文件:https://download.csdn.net/download/impossible1994727/12328614 参考文档:h ...

  5. go walk 开发window界面,上传文件到阿里云oss -- 服务器端

    前面我们完成了一个网页端的上传oss程序:https://blog.csdn.net/daily886/article/details/103366145 现在我们把前后端分离 前端使用walk开发, ...

  6. go 使用 gin 上传文件到 阿里云oss存储

    本文使用 go 版本是: go version go1.13 linux/amd64 阿里云oss go sdk版本:v2.0.4  官网可以下载 linux版本是:Linux version 3.1 ...

  7. Erlang上传文件至阿里云OSS

    忙了快一个月忘记写博客这茬了,正好今天阿里云工作人员又给我打电话我才想起我还买过一个OSS资源包,今天写一个如何调用Erlang代码来将文件资源上传至OSS对象存储中. 前言 OSS对象存储的服务不必 ...

  8. vue 上传文件至阿里云oss

    先让后端在阿里云里面处理跨域问题 参考这篇文章   vue直传图片到阿里云OSS(单张直接上传)__小郑有点困了的博客-CSDN博客_vue 阿里云背景:近期项目使用到多图片上传功能,常规的调用后端接 ...

  9. 上传文件到阿里云OSS

    最近项目中有文件上传的功能,才发现阿里云oss真是个好东西. 在其中做了好多的权限设置,角色.子账户.bucket等等. web端进行文件上传有多种方式 一.无需临时授权(安全性较低) (一).拿到权 ...

最新文章

  1. linux: convmv =-======pkgs.org
  2. UESTC 电子科大专题训练 数据结构 J
  3. oracle0级备份和全备份实录_蓝光硬盘备份管理系统在档案系统的应用
  4. 隐马尔科夫模型C#语言算法实现
  5. SQL强化(二) 在Oracle 中写代码
  6. 数据结构--树状数组
  7. Docker之获取镜像(一)
  8. Python爬取猫眼电影排行榜并写入MySQL
  9. [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配...
  10. gdc服务器维修员登录密码,gdc服务器密码
  11. pico的学习之路(五)——ssd1306上显示汉字(树莓派pico实现)
  12. autojs实现无障碍关机重启和随机姓名
  13. An effective intrusion-resilient mechanism for PLCs against data tampering attacks
  14. 浅析Relaxed Ordering对PCIe系统稳定性的影响
  15. npm 安装出现 UNMET DEPENDENCY 的解决方案
  16. ARMSYS6410开发板产品FAQ
  17. 铁匠smith_铁匠镇的皱纹地图
  18. 2023西安电子科技大学考研分析
  19. mysql 快照 理解_MySQL - 当前读和快照读
  20. 记一次失败的安装tun设备过程

热门文章

  1. 软件测试真假童子,19岁年薪千万,他打王者荣耀打成了“游戏圈的TFBOYS”
  2. cs61a笔记-2020fall
  3. 澳洲技术移民评分标准
  4. 穿越火线枪战王者服务器维护,CF手游体验服6.10更新维护公告 六月版本来袭
  5. 视频教程-①Spring Cloud 第一季(初级入门篇)-Java
  6. 蓝桥杯 历届试题 小数第n位(C语言)
  7. kingcms企业(php) 9.0下载,[下载]地方门户 9.0(K9地方门户版)_KingCMS官方网站
  8. 学习笔记(2)——TransE算法(Translating Embedding)
  9. Java消息队列与JMS的诞生
  10. TED 不要变成自己人生的旁观者