微信小程序直接上传文件到阿里云OSS

微信小程序直接上传文件到阿里云OSS(Object Storage Service)的过程涉及多个步骤,以下是一个清晰的步骤说明:

1. 配置Bucket跨域规则

  • OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。
  • 登录OSS管理控制台,选择Bucket列表,然后单击目标Bucket名称。
  • 在Bucket详情页中,选择“权限管理” > “跨域设置”,点击“设置”进入跨域规则配置页面。
  • 单击“创建规则”,根据提示配置跨域规则,确保支持Post方法。

2. 配置外网域名到小程序的上传域名白名单

  • 通过OSS控制台查看Bucket的外网域名。
  • 登录微信小程序平台,在“开发” > “开发设置” > “服务器域名”中,配置小程序的上传文件(uploadFile)的合法域名,将OSS的外网域名添加到白名单中。

3. 获取AccessKey和配置小程序端

  • 在阿里云RAM(Resource Access Management)中创建一个RAM用户,并为该用户分配OSS的访问权限。
  • 获取RAM用户的AccessKey ID和AccessKey Secret。
  • 在小程序端,创建一个配置文件(如config.js),在其中配置OSS的访问信息,包括Bucket域名、AccessKey ID和AccessKey Secret等。

4. 使用uploadFile接口上传文件

  • 在小程序端,使用wx.uploadFile接口上传文件。

  • 设置请求的URL为OSS的外网域名。

  • 设置filePath为待上传文件的本地路径。

  • formData中,设置必要的OSS参数,如key(对象键,即文件在OSS中的路径和文件名)、policy(策略Base64编码后的字符串)、OSSAccessKeyId(AccessKey ID)、signature(签名)等。

  • 示例代码(参考文章3):

 

javascript复制代码

const host = '<OSS外网域名>';
const signature = '<签名>';
const ossAccessKeyId = '<AccessKey ID>';
const policy = '<策略Base64编码后的字符串>';
const key = '<对象键>';
const 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);
}
});

注意事项

  • 为了安全起见,建议使用STS(Security Token Service)进行临时授权,避免在客户端直接暴露AccessKey ID和AccessKey Secret。
  • 确保小程序端配置的OSS访问信息(如Bucket域名、AccessKey ID等)与OSS的实际设置保持一致。
  • 在测试上传功能时,注意检查控制台输出和OSS控制台中的文件列表,确保文件已成功上传。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值