乐趣区

微信小程序上传文件小结

前言

后端用的是 Rails ActiveStorage direct_upload 的处理方式, 前端被要求:

  1. 提供文件的 MD5-Base64 校验值,获得上传地址;
  2. 将文件上传到上述指定地址(此处会校验文件的 MD5-Base64 值是否与上一步给的一致);
  3. 将文件的 signed_id 作为文件参数。

相关知识

因为目前开发任务重且紧,暂时略过此部分,只记录结论要点,后续有时间再补充相关知识

要点小结

3.0 上传文件(后端 Rails: activeStorage)

Step 1: 计算文件 MD5-Base64 摘要

  1. 小程序中前端无法获取文件的 Binary 格式 ,因此无法自行或使用第三方库来计算文件的MD5 值,但幸运的是,小程序也提供了 API 来做这件事,请使用:wx.getFileInfo
  2. 将获得的 MD5 值转为 Base64 格式。可使用此项目中 utils/base64.jsencode方法,该方法适用于转换字符串。也可使用 CryptoJS 库,需要注意的是,CryptoJS.enc.Base64.stringify需要的参数是 WordArray 格式,不能直接传 String,要先用CryptoJS.enc.Utf8.parse 转换一下字符串

Step 2: 上传文件到上一步返回的指定 direct_upload 地址

  1. 小程序前端无法直接获得文件的 Binary 格式传给后端,但可以通过 wx.uploadFile 上传文件,通过此接口发送请求,后端可获取到文件 Binary 格式
  2. 后端提供的上传文件接口需符合 wx.uploadFile 的要求,即 请求方式为 POST, 并指定所需文件key 名(而不是直接要求把 Binary 文件丢在请求 body 中)
退出移动版