qq_22850293 2024-10-03 20:36 采纳率: 0%
浏览 111
已结题

微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错

您号我看了您的《微信小程序纯前端从阿里云OSS下载json数据-完整版》 付费下载了 aliyun-oss-sdk-6.18.0.min
然后 在项目中使用
let imgUrl = client.signatureUrl()

微信我报错 client.signatureUrl is not a function

  • 写回答

28条回答 默认 最新

  • giser@2011 2024-10-08 15:53
    关注
    获得0.15元问题酬金

    参考GPT

    您遇到的问题可能是由于您直接在微信小程序中使用 aliyun-oss-sdk-6.18.0.min 而没有正确初始化 SDK 或使用它提供的方法。aliyun-oss-sdk-6.18.0.min 是一个 Node.js SDK,而微信小程序的环境是基于浏览器的,它们运行在不同的 JavaScript 环境中,因此直接在小程序中使用 Node.js SDK 会出现问题。

    微信小程序不支持 Node.js 模块,因此不能直接使用 aliyun-oss-sdk-6.18.0.min。您需要使用微信小程序支持的 API 来从阿里云 OSS 下载文件。

    以下是使用微信小程序从阿里云 OSS 下载文件的步骤:

    1. 获取临时链接

      • 您需要在服务器端使用阿里云 OSS SDK 生成一个文件的临时链接(签名URL)。

      • 在服务器端,您可以使用以下代码生成签名 URL:

        const OSS = require('aliyun-oss-sdk').Wrapper;
        const oss = new OSS({
          region: '<your-region>',
          accessKeyId: '<your-accessKeyId>',
          accessKeySecret: '<your-accessKeySecret>',
          bucket: '<your-bucket-name>'
        });
        
        const fileKey = '<your-file-key>';
        const signatureUrl = oss.presignedUrl(fileKey, { expires: 3600 });
        
        console.log(signatureUrl);
        
    2. 在微信小程序中使用临时链接

      • 将服务器端生成的签名 URL 返回到小程序端。
      • 在小程序端,您可以使用 wx.downloadFile API 来下载文件:
        wx.downloadFile({
          url: signatureUrl, // 服务器返回的签名URL
          success: function(res) {
            if (res.statusCode === 200) {
              console.log('下载成功', res.tempFilePath);
              // 可以选择保存到相册或打开文件
              wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success: function() {
                  wx.showToast({
                    title: '保存成功',
                    icon: 'success',
                    duration: 2000
                  });
                },
                fail: function() {
                  wx.showToast({
                    title: '保存失败',
                    icon: 'none',
                    duration: 2000
                  });
                }
              });
            } else {
              wx.showToast({
                title: '下载失败',
                icon: 'none',
                duration: 2000
              });
            }
          },
          fail: function(error) {
            console.error('下载失败', error);
            wx.showToast({
              title: '下载失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
        
    3. 服务器端配置

      • 确保您的服务器端配置正确,并且有权限访问阿里云 OSS。
      • 服务器端代码需要部署到一个可以运行 Node.js 的环境中。

    请注意,以上步骤中的 <your-region>, <your-accessKeyId>, <your-accessKeySecret>, <your-bucket-name>, <your-file-key> 需要替换为您实际的阿里云 OSS 配置和文件信息。

    这种方法不需要在小程序端直接使用阿里云 OSS SDK,而是通过服务器端代理生成签名 URL,再由小程序端使用微信提供的 API 下载文件。这样可以避免直接在小程序环境中使用 Node.js SDK 的问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 创建了问题 10月3日