spring boot 的图片上传OSS

本文介绍了如何在Spring Boot项目中实现图片上传到OSS服务。首先,通过@Configuration和@PropertySource注解配置Util工具类,加载oss.properties配置文件。接着,展示了项目的目录结构。然后,详细说明了配置文件oss.properties的内容。最后,提供了使用@Api注解的上传图片Controller的代码示例。
摘要由CSDN通过智能技术生成

话不多说 天才第一步

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

一、准备好Util工具类

/**
 * 使用阿里云OSS存储对象上传图片
 *  @author Mark.Lee
 */
@Configuration
@PropertySource("classpath:config/oss.properties")
public class OSSClientUtil {
    /** 日志 */
    private static Logger logger = LoggerFactory.getLogger(OSSClientUtil.class);

    /** 阿里云API的密钥Access Key ID */
    private static String accessKeyId;
    /** 阿里云API的密钥Access Key Secret */
    private static String accessKeySecret;
    /** 阿里云API的内或外网域名 */
    private static String endpoint;
    /** 阿里云API的bucket名称 */
    private static String bucketName;
    /** 阿里云API的文件夹名称 */
    private static String folder;
    /** 阿里云API的文件夹名称 [券模块]*/
    private static String couponFolder;


    /**
     * 获取阿里云OSS客户端对象
     *
     * @return ossClient
     */
    public static OSSClient getOSSClient() {
        return new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }

    /**
     * 创建存储空间
     *
     * @param ossClient
     *            OSS连接
     * @param bucketName
     *            存储空间
     * @return
     */
    public static String createBucketName(OSSClient ossClient, String bucketName) {
        // 存储空间
        final String bucketNames = bucketName;
        if (!ossClient.doesBucketExist(bucketName)) {
            // 创建存储空间
            Bucket bucket = ossClient.createBucket(bucketName);
            logger.info("创建存储空间成功");
            return bucket.getName();
        }
        return bucketNames;
    }

    /**
     * 删除存储空间buckName
     *
     * @param ossClient
     *            oss对象
     * @param bucketName
     *            存储空间
     */
    public static void deleteBucket(OSSClient ossClient, String bucketName) {
        ossClient.deleteBucket(bucketName);
        logger.info("删除" + bucketName + "Bucket成功");
    }

    /**
     * 创建模拟文件夹
     *
     * @param ossClient
     *            oss连接
     * @param bucketName
     *            存储空间
     * @param folder
     *            模拟文件夹名如"qj_nanjing/"
     * @return 文件夹名
     */
    public static String createFolder(OSSClient ossClient, String bucketName, String folder) {
        // 文件夹名
        final String keySuffixWithSlash = folder;
        // 判断文件夹是否存在,不存在则创建
        if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {
            // 创建文件夹
            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
            logger.info("创建文件夹成功");
            // 得到文件夹名
            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
            String fileDir = object.getKey();
            return fileDir;
        }
        return keySuffixWithSlash;
    }

    /**
     * 根据key删除OSS服务器上的文件
     *
     * @param ossClient
     *            oss连接
     * @param bucketName
     *            存储空间
     * @param folder
     *            模拟文件夹名 如"qj_nanjing/"
     * @param key
     *            Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
     */
    public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key) {
        ossClient.deleteObject(bucketName, folder + key);
        logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
    }

    /**
要在Spring Boot中将图片上传OSS(阿里云对象存储),可以使用阿里云提供的Java SDK进行操作。以下是一个简单的实现步骤: 1.添加依赖 在你的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.1</version> </dependency> ``` 2.配置OSS客户端 在你的application.properties文件中添加OSS的配置信息: ```properties aliyun.oss.endpoint=oss-cn-hangzhou.aliyuncs.com aliyun.oss.accessKeyId=yourAccessKeyId aliyun.oss.accessKeySecret=yourAccessKeySecret aliyun.oss.bucketName=yourBucketName ``` 接着,创建一个OSS客户端实例: ```java @ConfigurationProperties(prefix = "aliyun.oss") @Component public class OSSClientConfig { private String endpoint; private String accessKeyId; private String accessKeySecret; private String bucketName; @Bean public OSSClient ossClient() { return new OSSClient(endpoint, accessKeyId, accessKeySecret); } // getters and setters } ``` 3.编写上传代码 在你的Controller中编写上传代码: ```java @RestController @RequestMapping("/upload") public class UploadController { @Autowired private OSSClient ossClient; @PostMapping("/image") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) { try { // 获取文件名 String fileName = file.getOriginalFilename(); // 创建一个唯一的文件名 String uniqueFileName = UUID.randomUUID().toString() + "_" + fileName; // 上传文件到OSS ossClient.putObject("yourBucketName", uniqueFileName, file.getInputStream()); // 返回文件的访问URL String fileUrl = "https://yourBucketName.oss-cn-hangzhou.aliyuncs.com/" + uniqueFileName; return ResponseEntity.ok(fileUrl); } catch (IOException e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败"); } } } ``` 这段代码将上传的文件存储到OSS,并返回文件的访问URL。 以上就是一个简单的Spring Boot上传图片到OSS的实现方式。当然,还有很多细节需要注意,比如上传文件的大小限制等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值