上传图片到阿里云oss

1、加入依赖包
<dependency>
   <groupId>com.aliyun.oss</groupId>
   <artifactId>aliyun-sdk-oss</artifactId>
   <version>2.4.0</version>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.4</version>
   <scope>provided</scope>
</dependency>

 

2.上传代码

// @Value("${aliyun.endpoint}")
  private String endpoint;//节点,在阿里云开通oss功能后获得
 // @Value("${aliyun.accessKeyId}")
  private String accessKeyId;//id,在阿里云开通oss功能后获得
 // @Value("${aliyun.accessKeySecret}")
  private String accessKeySecret;//秘钥,在阿里云开通oss功能后获得
//  @Value("${aliyun.bucketName}")
  private String bucketName ;//组名,在阿里云开通oss功能后创建

  //文件存储目录
  private String filedir = "userImg/";

 

  /**
   *
   * 上传图片
   * @param file
   * @return
   */
  public String uploadImg2Oss(String path,MultipartFile file) {
      if (file.getSize() > 1024 * 1024 *20) {
          return "图片太大";//RestResultGenerator.createErrorResult(ResponseEnum.PHOTO_TOO_MAX);
      }
      String originalFilename = file.getOriginalFilename();
      String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
      Random random = new Random();
      String name = random.nextInt(10000) + System.currentTimeMillis() + substring;
      try {
          InputStream inputStream = file.getInputStream();
          this.uploadFile2OSS(inputStream, name,path);
          if (inputStream != null) {
              inputStream.close();
          }
          return name;//RestResultGenerator.createSuccessResult(name);
      } catch (Exception e) {
          return "上传失败";//RestResultGenerator.createErrorResult(ResponseEnum.PHOTO_UPLOAD);
      }
  }

  /**
   * 上传图片获取fileUrl
   * @param instream
   * @param fileName 文件名称
   * @param path 文件路径
   * @return
   */
  private String uploadFile2OSS(InputStream instream, String fileName,String path) {
      String ret = "";
      OSSClient ossClient = null;
      try {
          //创建上传Object的Metadata
          ObjectMetadata objectMetadata = new ObjectMetadata();
          objectMetadata.setContentLength(instream.available());
          objectMetadata.setCacheControl("no-cache");
          objectMetadata.setHeader("Pragma", "no-cache");
          objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
          objectMetadata.setContentDisposition("inline;filename=" + fileName);
          //上传文件

          ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
          ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
          PutObjectResult putResult = ossClient.putObject(bucketName, path + fileName, instream, objectMetadata);
          ret = putResult.getETag();
      } catch (IOException e) {
          log.error(e.getMessage(), e);
      } finally {
          try {
              if (instream != null) {
                  instream.close();
              }
              //在ossClient使用之后应该立即关闭
              if(ossClient != null){
                  ossClient.shutdown();
              }

          } catch (IOException e) {
              e.printStackTrace();
          }
      }
      return ret;
  }
public void delete(String objectName) {
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    // 根据BucketName,objectName删除文件
    ossClient.deleteObject(bucketName, objectName);
    if(ossClient != null){
        ossClient.shutdown();
    }
}

/**
 * @author lastwhisper
 * @desc 下载文件
 * 文档链接 https://help.aliyun.com/document_detail/84823.html?spm=a2c4g.11186623.2.7.37836e84ZIuZaC#concept-84823-zh
 * @email gaojun56@163.com
 */
public void exportOssFile(OutputStream os, String objectName) throws IOException {
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
    OSSObject ossObject = ossClient.getObject(bucketName, objectName);
    // 读取文件内容。
    BufferedInputStream in = new BufferedInputStream(ossObject.getObjectContent());
    BufferedOutputStream out = new BufferedOutputStream(os);
    byte[] buffer = new byte[1024];
    int lenght = 0;
    while ((lenght = in.read(buffer)) != -1) {
        out.write(buffer, 0, lenght);
    }
    if(ossClient != null){
        ossClient.shutdown();
    }
    if (out != null) {
        out.flush();
        out.close();
    }
    if (in != null) {
        in.close();
    }
}
Vue3是一种流行的JavaScript框架,用于构建用户界面。它具有响应式数据绑定、组件化开发和虚拟DOM等特性,使得开发者可以更高效地构建交互式的Web应用程序。 要在Vue3中实现上传图片阿里云OSS,你可以按照以下步骤进行操作: 1. 安装依赖:首先,你需要安装阿里云OSS的JavaScript SDK。可以使用npm或yarn命令来安装,例如: ``` npm install ali-oss ``` 2. 配置OSS客户端:在Vue3的代码中,你需要创建一个OSS客户端实例,并配置相关参数,如AccessKeyId、AccessKeySecret、Endpoint等。这些参数可以在阿里云OSS控制台中获取。 3. 创建上传组件:在Vue3中,你可以创建一个上传组件,用于选择图片文件并触发上传操作。可以使用`<input type="file">`元素来实现文件选择功能,并监听其`change`事件。 4. 上传图片:在上传组件中,你可以编写上传图片的逻辑。当用户选择了图片文件后,你可以通过OSS客户端调用`put`方法来上传图片文件到阿里云OSS。 下面是一个简单的示例代码,演示了如何在Vue3中上传图片阿里云OSS: ```javascript <template> <div> <input type="file" @change="handleFileChange"> </div> </template> <script> import OSS from 'ali-oss'; export default { methods: { handleFileChange(event) { const file = event.target.files[0]; const client = new OSS({ accessKeyId: 'your-access-key-id', accessKeySecret: 'your-access-key-secret', bucket: 'your-bucket-name', region: 'your-oss-region', // 其他配置参数... }); // 生成唯一的文件名 const fileName = Date.now() + '-' + file.name; // 调用OSS客户端的put方法上传文件 client.put(fileName, file).then(response => { console.log('上传成功', response); // 在这里可以处理上传成功后的逻辑 }).catch(error => { console.error('上传失败', error); // 在这里可以处理上传失败后的逻辑 }); } } } </script> ``` 请注意,上述代码中的`your-access-key-id`、`your-access-key-secret`、`your-bucket-name`和`your-oss-region`需要替换为你自己的阿里云OSS相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值