开发者社区 > 云原生 > Serverless > 正文

请问我建立的事件oss触发器,我要怎么实现上传图片呢,我可以通过http请求上传吗

请问我建立的事件oss触发器,我要怎么实现上传图片呢,我可以通过http请求上传吗

展开
收起
函数计算小白 2023-05-18 14:20:31 58614 0
7 条回答
写回答
取消 提交回答
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    你好,函数计算创建OSS触发器之后,可以直接通过 oss:ObjectCreated:PutObject 调用PutObject接口上传文件。其他OSS事件定义的详细介绍可以参考文档:文档,另外调用PutObject接口上传文件(Object)的详细操作信息可以参考文档:文档

    2023-05-20 10:10:27
    赞同 展开评论 打赏
  • 用oss的sdk,api,控制台,客户端,命令行工具都可以

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-05-18 20:09:22
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云函数计算中的事件 OSS 触发器可以自动将 OSS 上的文件变化事件(例如上传、删除、更新)转换为函数调用,从而实现对 OSS 文件进行处理。对于上传图片的需求,您可以在触发函数中编写代码来处理上传的图片。

    一种常见的上传方法是使用 OSS SDK,您可以在函数中引入 OSS SDK,并使用其提供的方法来上传图片。下面是一个使用 OSS Node.js SDK 上传图片的示例代码:

    'use strict';
    const OSS = require('ali-oss');
    // OSS 配置信息
    const ossConfig = {
      region: 'oss-cn-hangzhou',
      accessKeyId: 'your-accessKeyId',
      accessKeySecret: 'your-accessKeySecret',
      bucket: 'your-bucket-name',
      secure: true
    }
    // 初始化 OSS 客户端
    const client = new OSS(ossConfig);
    async function handler(event, context, callback) {
      // event 包含触发事件相关信息,如文件名、Bucket等
      const eventName = event.events[0].eventName;
      const ossObject = event.events[0].oss;
      const bucketName = ossObject.bucket.name;
      const objectKey = ossObject.object.key;
      const imageUrl = `https://${bucketName}.${ossConfig.region}.aliyuncs.com/${objectKey}`;
      // 使用 OSS SDK 上传图片
      try {
        const result = await client.put(objectKey, imageUrl);
        console.log(result);
      } catch (err) {
        console.log(err);
      }
      callback(null, 'success');
    }
    exports.handler = handler;
    

    另外,您也可以在函数中使用 HTTP 请求来上传图片,例如使用axios模块发送 POST 请求上传图片,示例代码如下:

    'use strict';
    const axios = require('axios');
    async function handler(event, context, callback) {
      // event 包含触发事件相关信息,如文件名、Bucket等
      const ossObject = event.events[0].oss;
      const imageUrl = `https://${ossObject.bucket.name}.${ossObject.region}.aliyuncs.com/${ossObject.object.key}`;
      // 使用 HTTP 请求上传图片
      try {
        const response = await axios({
          method: 'post',
          url: 'your-upload-url',
          data: {
            imageUrl: imageUrl,
            // 其他上传参数
          },
          headers: {
            'Content-Type': 'application/json'
          }
        });
        console.log(response.data);
      } catch (err) {
        console.log(err);
      }
      callback(null, 'success');
    } 
    exports.handler = handler;
    

    使用 HTTP 请求上传图片时,您需要提供一个上传接口地址,并在接口中处理上传的图片。

    2023-05-18 18:42:40
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    可以通过HTTP请求上传图片到OSS触发器中。以下是一些基本步骤:

    在OSS中创建一个存储桶,用于存储上传的图片。

    在OSS中创建一个事件触发器,用于触发上传图片的操作。

    在你的应用程序中,使用HTTP请求将图片上传到OSS触发器中。

    在触发器中,编写代码来处理上传的图片。可以使用阿里云提供的SDK来完成这个任务,也可以使用其他的工具或库。

    在处理完成后,触发器可以将结果返回给应用程序,以便你可以对上传的图片进行进一步处理。

    需要注意的是,上传图片时需要确保安全性,防止未授权的访问。可以使用阿里云提供的签名机制来实现这个目的。

    2023-05-18 15:14:51
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    OSS触发器如何实现上传图片,可以通过HTTP触发器实现。您可以在函数代码中使用OSS SDK实现文件上传到OSS,然后通过HTTP响应将结果返回给用户

    2023-05-18 14:44:43
    赞同 展开评论 打赏
  • 您可以使用阿里云的OSS SDK来上传图片,具体使用方法请参考阿里云官方文档:https://help.aliyun.com/document_detail/32026.html

    您也可以通过HTTP请求上传图片,具体方法为使用阿里云的OSS API,即将上传的图片通过HTTP POST请求发送到OSS,并在请求中包含签名信息等必要的参数。具体使用方法请参考阿里云官方文档:https://help.aliyun.com/document_detail/31988.html

    2023-05-18 14:38:26
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    是的,你可以通过HTTP请求上传图片。以下是一个简单的示例:

    1. 首先,你需要在OSS控制台中创建一个存储桶,并设置访问权限和策略。

    2. 然后,你可以在你的应用程序中使用OSS SDK来上传文件。以下是一个Java代码示例:

    String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    String accessKeyId = "<your access key id>";
    String accessKeySecret = "<your access key secret>";
    String bucketName = "<your bucket name>";
    String objectName = "<your object name>";
    String filePath = "<your file path>";
    
    // 初始化OSS客户端
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
    // 打开文件并读取数据
    File file = new File(filePath);
    byte[] data = new byte[(int) file.length()];
    FileInputStream inputStream = new FileInputStream(file);
    inputStream.read(data);
    inputStream.close();
    
    // 设置对象元数据
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("image/jpeg"); // 设置内容类型为图片格式
    metadata.setContentLength(data.length); // 设置内容长度为文件大小
    
    // 上传对象到OSS
    PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, data, metadata);
    System.out.println(putObjectResult);
    
    1. 在上传时,你还需要指定上传到哪个桶、哪个对象以及对象的元数据等信息。其中,bucketName 表示存储桶名称,objectName 表示对象名称,metadata 表示对象元数据。你可以根据实际情况修改这些参数。
    2023-05-18 14:27:37
    赞同 展开评论 打赏
滑动查看更多

快速交付实现商业价值。

相关电子书

更多
云存储之OSS实战进阶分享 立即下载
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载