更新时间:2025-08-12 gmt 08:00

nodejs语言方案-j9九游会登录

前提条件

  • 已拥有华为云账号且已实名认证。
  • 华为云账号未欠费,且有足够金额购买本案例所涉及的资源。

操作步骤

  1. 创建函数
    1. 登录,在左侧导航栏选择“函数 > 函数列表”,单击“创建函数”。
    2. 选择“创建空白函数”,填写函数信息,完成后单击“创建函数”。
      • 函数类型:事件函数。
      • 区域:华北-北京四。
      • 函数名称:输入您自定义的函数名称,此处以“upload-file-1”为例。
      • 委托名称:未使用任何委托。
      • 运行时:node.js 14.18。
    3. 在“代码”页签,复制如下代码替换默认的函数代码,并单击“部署”更新函数。
      const stream = require("stream");
      const busboy = require("busboy");
      exports.handler = async (event, context) => {
          const logger = context.getlogger()
          logger.info("function start run.");
          if (!("content-type" in event.headers) ||
              !event.headers["content-type"].includes("multipart/form-data")) {
              return {
                  'statuscode': 200,
                  'headers': {
                      'content-type': 'application/json'
                  },
                  'body': 'the request is not in multipart/form-data format.',
              };
          }
          const busboy = busboy({ headers: event.headers });
          let buf = buffer.alloc(0);
          busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
              logger.info('filename:'   json.stringify(filename))
              file.on('data', function (data) {
                  logger.info('obtains '   data.length   ' bytes of data.')
                  buf = buffer.concat([buf, data]);
              });
              file.on('end', function () {
                  logger.info('end data reception');
              });
          });
          busboy.on('finish', function () {
              //这里处理数据
              logger.info(buf.tostring());
              return {
                  'statuscode': 200,
                  'headers': {
                      'content-type': 'application/json'
                  },
                  'body': 'ok',
              };
          });
          //apig触发器默认对数据进行base64编码,这里解码
          const body = buffer.from(event.body, "base64");
          var bodystream = new stream.passthrough();
          bodystream.end(body);
          bodystream.pipe(busboy);
      }
  2. 配置函数依赖
    1. 制作依赖包。代码中选择busboy库解析上传的文件,需要生成node.js14.18版本对应的依赖包busboy.zip。如果您使用node.js语言其他版本,请制作对应版本的依赖包,具体请参考制作依赖包
    2. 创建依赖包。在左侧导航栏“函数 > 依赖包”管理页面,单击“创建依赖包”,配置完成后单击“确定”。
      • 依赖包名称:输入您自定义的依赖包名称,例如“busboy”。
      • 代码上传方式:上传zip文件。
      • 运行时:node.js 14.18。
      • 文件上传:添加制作完成的依赖包。
    3. 添加依赖包。进入upload-file-1函数详情页面,在“代码”页签最底部,单击“添加依赖包”。在“私有依赖包”的包源中,选择上一步创建的busboy依赖包,单击“确定”,完成依赖包的添加。
  3. 配置apig触发器
    1. 在upload-file-1函数详情页面,单击“设置 > 触发器”,开始创建触发器。
    2. 单击“创建触发器”,触发器类型选择“api 网关服务(apig 专享版)”。
      • 实例:选择api实例,若无可用实例,可单击“创建实例”进入创建页面。
      • api名称:默认即可,无需修改。
      • 分组:选择在apig创建的api分组,若无分组,可单击“创建分组”跳转至apig创建。
      • 发布环境:release。
      • 安全认证:此处为方便测试,配置“none”,实际业务请选择更安全的认证方式。
      • 请求协议:选择“https”。
      • 请求方法:选择“any”。
      • 后端超时(毫秒):默认5000毫秒。
  4. 端到端测试

    以curl工具为例(curl -f的方式主要用的是linux环境),您也可以选择postman等其他工具,在本地创建app.log文件,内容自定义,此处简单举例:

    start something
    run
    stop all

    执行如下命令测试:

    curl -iv {apig触发器url} -f upload=@/{本地文件路径}/app.log
    图1 示例

    在upload-file-1函数详情页面的“监控”页签下,查看日志,可看到文件内容的打印。实际业务中,用户可根据需要修改代码保存数据到对象存储obs、日志服务lts等云服务或直接处理。

相关文档

网站地图