首页 > 编程语言 >微信小程序直传文件到OSS

微信小程序直传文件到OSS

时间:2024-09-20 08:56:00浏览次数:14  
标签:文件 微信 OSS 程序 域名 上传 直传

本文介绍如何在微信小程序环境下将文件上传到OSS。

背景信息

小程序是当下比较流行的移动应用,例如大家熟知的微信小程序、支付宝小程序等。小程序是一种全新的开发模式,无需下载和安装,为终端用户提供更优的用户体验。如何在小程序环境下上传文件到OSS也成为开发者比较关心的一个问题。

JavaScript客户端直传实践的原理相同,小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS。关于PostObject的详细介绍,请参见PostObject

步骤1:微信小程序配置域名白名单

您可以为微信小程序配置域名白名单,以实现微信小程序和OSS Bucket之间的正常通信。

  1. 登录OSS管理控制台

  2. 单击Bucket 列表,然后单击目标Bucket名称。

  3. 在Bucket内的左侧导航栏,单击概览,然后在访问端口区域查看Bucket域名

  4. 登录微信小程序平台,将上传和下载的合法域名填写为Bucket的外网访问域名。

    说明

    实际业务中,建议您将OSS提供的外网域名和您自己的域名进行绑定,以便使用自定义域名访问OSS存储空间中的文件。配置步骤,请参见绑定自定义域名

步骤2:获取签名

为了您的数据安全,建议使用签名方式上传文件。OSS提供服务端签名和客户端签名两种签名方式。

服务端签名

客户端签名

步骤3:使用微信小程序上传

使用uploadFile接口上传文件,示例代码如下:

const host = '<host>';
const signature = '<signatureString>';
const ossAccessKeyId = '<accessKey>';
const policy = '<policyBase64Str>';
const key = '<object name>';
const securityToken = '<x-oss-security-token>'; 
const filePath = '<filePath>'; // 待上传文件的文件路径。
wx.uploadFile({
  url: host,
  filePath: filePath,
  name: 'file', // 必须填file。
  formData: {
    key,
    policy,
    OSSAccessKeyId: ossAccessKeyId,
    signature,
    // 'x-oss-security-token': securityToken // 使用STS签名时必传。
  },
  success: (res) => {
    if (res.statusCode === 204) {
      console.log('上传成功');
    }
  },
  fail: err => {
    console.log(err);
  }
});

参数

是否必选

说明

host

填写访问域名,且必须携带https。支持以下两种类型的访问域名:

  • Bucket访问域名,例如https://examplebucket.oss-cn-zhangjiakou.aliyuncs.com

  • 自定义域名。该自定义域名需绑定目标Bucket。

signature

填写步骤2中获取到的signature信息。

ossAccessKeyId

填写您的AccessKey ID。如果您是通过STS获取的临时用户,则填写临时用户的AccessKey ID。

policy

填写步骤2中获取到的policy信息。

key

设置文件上传至OSS后的文件路径。例如,您需要将myphoto.jpg上传至test文件夹下,则填写test/myphoto.jpg

securityToken

如果使用STS认证,则填写步骤2中使用客户端签名获取到的SecurityToken。

filePath

填写待上传文件的本地完整路径,例如D:\example.txt

常见问题

  • iOS系统使用微信小程序直传后,返回的结果中,为什么ETag参数名称会变为Etag?

    问题原因:使用微信小程序直传后,OSS会返回标准的ETag。但是iOS系统的微信小程序会将返回的ETag转成了Etag,导致客户端调用ETag参数的业务出现问题。

    解决方案:若您的业务涉及多个系统的微信小程序直传场景,建议您将Header中的所有参数名都转成小写进行兼容。

  • 上传成功后,如何获取文件URL?

    具体操作,请参见使用文件URL分享文件

  • PostObject请求时,报错The bucket POST must contain the specified 'key'. If it is specified, please check the order of the fields.怎么办?

    问题原因:没有指定key表单域。

    解决方案:PostObject请求时必须指定key表单域。更多信息,请参见PostObject

  • 微信小程序是否支持同时上传多个文件?

    不支持,单次调用PostObject接口仅支持上传一个文件。如果您希望通过微信小程序上传多个文件,请循环调用PostObject接口。

  • OSS SDK是否支持微信小程序直传?

    不支持。微信小程序直传基于微信小程序API实现,与OSS SDK无关。

  • 微信小程序是否支持断点续传?

    OSS基于微信的uploadFile接口上传文件,该接口不支持断点续传。

  • 微信小程序是否支持删除OSS资源?

    微信小程序支持删除OSS资源,但是需要您自行实现签名逻辑。

标签:文件,微信,OSS,程序,域名,上传,直传
From: https://blog.csdn.net/segwy/article/details/142350892

相关文章

  • 使用go做一个微信机器人
    常见开发功能:好友管理:添加好友、删除好友、修改备注、创建标签、获取好友列表、搜索好友信息消息管理:发文本消息、图片消息、名片消息、动图表情、小程序、发文件、发送视频、发送URL链接群管理:自动创群、修改群名称、邀请新成员、踢群成员、获取群列表、发送邀请链接、获取群聊朋......
  • 基于SpringBoot+Vue的医疗服务管理系统+原生微信小程序+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 微信小程序开发第五课
    一vant-app#https://vant-contrib.gitee.io/vant-weapp/#/home1.1集成步骤#0必须使用专门为小程序提供的npm包,通常好多包用不了,比如第三方包用了dom,小程序没有https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html#%E5%8F%91%E5%B8%83-npm-%E5%8C......
  • 微信答题小程序产品研发-确定产品的定位
    盛夏蝉鸣起,荷风香十里。我前面说过,我决意仿一款答题小程序,所以我做了大量的调研。答题小程序软件产品开发不仅仅是写代码这一环,它包含从需求调研、分析与构思、设计到开发、测试再到部署上线一系列复杂过程。在软件开发中,确定产品的定位是至关重要的一步,它决定了产品将如何满足市场......
  • 【BurpSuite】Cross-site scripting (XSS 学徒部分:1-9)
    ......
  • 基于微信小程序的在线投稿系统-计算机毕业设计源码+LW文档
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的在线投稿系统的开发全过程。通过分析基于微信小程序的在线投稿系统管理的不足,创建了一个计算机管理基于微信小程序的在线投稿系统的方案。文章介绍了基于微信小......
  • 基于微信小程序的高校体育场管理系统-计算机毕业设计源码+LW文档
    (一)本课题的目的通过本次课题能够将所学的软件开发知识应用于基于微信小程序的高校体育场管理系统的开发,完成基于微信小程序的高校体育场管理系统设计与实现。同时培养学生综合运用所学理论知识和技能;培养学生调查研究,查阅技术文献、资料、手册以及编写技术文档的能力;通过本次课题,......
  • 用于日语词汇学习的微信小程序-计算机毕业设计源码+LW文档
    摘要日语词汇学习小程序是高校人才培养计划的重要组成部分,是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。本学生所在学院多采用半手工管理日语词汇学习小程序的方式,所以有必要开发日语词汇学习小程序管理系统来对......
  • uni-app在微信小程序、H5 和 App 中实现扫码功能
    在uni-app中实现扫码功能,可以通过调用不同平台提供的扫码API来实现。下面分别介绍在微信小程序、H5和App中如何实现扫码功能。1.微信小程序在微信小程序中,你可以使用wx.scanCode接口来实现扫码功能。示例代码在你的.wxml文件中,添加一个按钮:<buttonbindtap......
  • 基于微信的乐室预约小程序-计算机毕业设计源码+LW文档
    摘要随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对乐室预约小程序进行需求分析,得......