前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录 OpenHarmony 使用 request.uploadFile 时踩的坑

记录 OpenHarmony 使用 request.uploadFile 时踩的坑

作者头像
Gorit
发布2024-05-24 18:15:08
550
发布2024-05-24 18:15:08
举报

开发环境

  • 设备环境:OpenHarmony 4.1.x
  • SDK 版本:API 10
  • 开发模型:Stage 模型
  • IDLE: Dev Eco 4.1

官方文档

踩坑一:后台服务地址

上传文件依赖后台服务器,如果使用本地搭建的服务,是无法访问的,还没试过修改 hosts 文件是否可以。否则就会出现如下错误

img
img

但是为了方便调试,我还是本地开了一个服务,但是我使用内网穿透工具将本地服务代理到公网,然后使用公网域名实现的调试

踩坑二:api 参数

UploadConfig 上传文件的参数错一个都不行! 里面有个本地文件上传路径,官方文档也写的比较模糊,这个路径可以通过 context.cacheDir 来获得,

代码语言:javascript
复制
let uploadConfig: request.UploadConfig = {
  url: url, //需要手动替换为真实服务器地址
  header: {
    'Content-Type': 'multipart/form-data',
  },
  method: http.RequestMethod.POST,
  files: [
    {
      filename: "biLog.zip",
      name: "file",
      uri: `internal://cache/biLog.zip`, // 这里路径必须用 cache 路径,官方文档这么要求的
      type: "zip"
    },
  ],
  data: [{
    name: "file", value: "file"
  }],
};

踩坑三; 如何获取后台返回的结果

这里 鸿蒙没有直接把结果返回到 body 中,而是把结果放到了 header 中获取

代码语言:javascript
复制
      try {
        request.uploadFile(context, uploadConfig).then((data: request.UploadTask) => {
          uploadTask = data;

          uploadTask.on('headerReceive', headerCallback);  // 2 , 返回的结果会在 header 中拿到数据
          uploadTask.on('progress', upProgressCallback);  // 1
          uploadTask.on('complete', upCompleteCallback);  // 3
          uploadTask.on('fail', upFailCallback);  // 3

        }).catch((err: BusinessError) => {
          console.log(TAG, `upload Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
          if (callback) {
            callback("error", err);
          }
        });
      } catch (err) {
        console.log(TAG, `upload Failed to request the upload. err: ${JSON.stringify(err)}`);
        if (callback) {
          callback("error", err);
        }
      } finally {

      }
    }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发环境
  • 踩坑一:后台服务地址
  • 踩坑二:api 参数
  • 踩坑三; 如何获取后台返回的结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档