0
点赞
收藏
分享

微信扫一扫

微信小程序/vue通过阿里云上传图片

善解人意的娇娇 2022-03-24 阅读 58
阿里云

1.首先前端放入获取上传的组件
微信小程序uview组件:
https://www.uviewui.com/components/upload.html
在这里插入图片描述

vue所使用的element组件:
https://element.eleme.cn/#/zh-CN/component/upload
在这里插入图片描述

上面一个是微信小程序的上传,一个是普通浏览器的前端上传组件的代码出处。

后端我们需要一个阿里云的依赖,这个依赖是工具包用的。

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

接下来需要配置yaml文件

aliyun:
  oss:
    file:
      endpoint: oss-cn-(区域:上海、北京等,用拼音表达,注意这个括号是不存在的).aliyuncs.com
      keyId: 开通oss服务时生成的keyId
      keySecret: 开通oss服务时生成的keySecret
      dirName: 阿里云上传图片路径的文件名比如:/avatar
      bucketName: bucketName

这些去哪里获取,如何开通
(1)开通OSS服务
去阿里云打开oss管理控制台开通
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后创建Bucket存储空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建文件夹上传图片
在这里插入图片描述
在这里插入图片描述

在头像中,点击“AccessKey管理”进行RAM设置
在这里插入图片描述
选择使用子用户在这里插入图片描述
创建用户组:在这里插入图片描述
在这里插入图片描述
添加用户在这里插入图片描述
添加用户到用户组在这里插入图片描述
设置权限
在这里插入图片描述
获取子用户AccessKeyId,AccessKeySecret在这里插入图片描述
这样就获取到了ymal所以的配置信息。
接下里就是后端程序代码和两个工具类:
上传方法:

    @Resource
    private OSSUtils ossUtils;
    @PostMapping("/upload")
    public BaseResult upload(MultipartFile file)throws IOException{
        System.out.println("dadadadaad");
        InputStream is = file.getInputStream();
        String path = ossUtils.uploadToOSS(file);
        if (file.getSize()>1048576){
            return BaseResult.error("图片不得大于1M");
        }
        paths=path;

        return BaseResult.ok("上传成功",path);
    }

在这里插入图片描述
两个工具类:

package com.czxy.oss;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


@Component
@ConfigurationProperties(prefix="aliyun.oss.file")
@Data
public class OSSProperties {
    private String endpoint;
    private String keyId;
    private String keySecret;
    private String dirName;
    private String bucketName;
}

package com.czxy.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.UUID;

/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Component
public class OSSUtils {

    @Resource
    private OSSProperties ossProperties;

    /**
     * 上传到OSS
     * @param file 上传文件
     * @return 上传后的路径
     */
    public String uploadToOSS(MultipartFile file) {

        try {

            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(ossProperties.getEndpoint(), ossProperties.getKeyId(), ossProperties.getKeySecret());

            //System.currentTimeMillis()  //毫秒值
            String name = UUID.randomUUID().toString().replace("-", "");        //32长度

            // 截取图片的扩展名   mm.jpg
            String[] arr = file.getOriginalFilename().split("\\.");

            // 路径
            String path =  ossProperties.getDirName() + "/" + name + "." + arr[1];

            // 上传图片
            ossClient.putObject(ossProperties.getBucketName(), path , file.getInputStream());

            // 关闭OSSClient。
            ossClient.shutdown();

            //https://czxy-lt.oss-cn-shanghai.aliyuncs.com/avatar/b9c4d0a19b1d48eb89d9ff61284f83d6.jpg
            return "https://"+ossProperties.getBucketName()+"."+ossProperties.getEndpoint()+"/" + path;
        } catch (Exception e) {
            throw new RuntimeException("上传OSS异常");
        }
    }

}

其中微信小程序的前端代码与平时的vue不同,大家可以参考微信官方文档。

举报

相关推荐

0 条评论