【问题解决】HarmonyOS 鸿蒙Next使用http进行post请求时,使用multiFormDataList上传文件和参数后回调显示异常

发布于 1周前 作者 vueper 最后一次编辑是 5天前 来自 鸿蒙OS

【问题解决】HarmonyOS 鸿蒙Next使用http进行post请求时,使用multiFormDataList上传文件和参数后回调显示异常

目前使用http的api进行post上传数据和文件,代码如下:

现在的代码了解如下:

其他post接口(不上传文件的接口)是可以连通并且成功返回数据的 文件路径(filePath这个)是可以正常播放的 使用fs.copyFileSync()这个api复制文件到cache文件夹时,chche文件夹中的文件大小比原文件小,并且无法正常播放 当前问题有下面几个:

multiFormDataList中,filePath这个参数是否使用的为文件路径?不是的话如何处理成合适的参数? 这个方法返回的错误为:code=2300023,message=Failed writing received data to disk/application,想问下这个错误的原因是什么?以及如何处理? 以上两个问题烦请大佬赐教,非常感谢


let httpRequest = http.createHttp();
    httpRequest.request("https://www.test.com/submitData", {
      method: http.RequestMethod.POST,
      connectTimeout: 15000,
      readTimeout: 15000,
      header: {
        "Content-Type": "multipart/form-data"
      },
      multiFormDataList: [
        {
          name: "type",
          contentType: "",
          data: "zh_CN"
        },
        {
          name: "file",
          contentType: "audio/mpeg",
          filePath: "/data/storage/el2/base/haps/entry/files/type/zh_type_1.aac"
        }
      ]
    }, (err: BusinessError<void>, data: http.HttpResponse) => {
      if (err) {
        console.log("response",JSON.stringify(err))
        return
      }
  console.log(<span class="hljs-string"><span class="hljs-string">"response"</span></span>,data.result.toString())
})
4 回复

问题解决,详情如下:

先说结论:http的这个api功能没有问题,使用方法如上,这样使用是正常的

再说问题:出现2300023这个错误,就是文件的读写权限问题。

详细说明:

我这边的功能是:使用AVRecorder这个录音器录制音频后,将音频文件和参数上传到服务器。

我这边的问题是:创建文件时使用了fs.open打开了空白文件,然后进行了录音操作;在录音结束后,你接使用了fs.close关闭了文件,然后提交数据到服务器。因为fs.close这个api可能存在延迟,在未完全回调的时候上传了被占用的文件,因此出现文件权限的问题。

正确方式:在fs.close的回调中再进行操作,即可解决问题

我们也有这个问题,使用post提交多个参数和一个文件出现问题。ir提单已经10天了也没处理完成,看换了好多个人了,效率好慢啊,严重拖累进度了
你好,可以尝试使用三方库eftool中提供的efClientApi组件试试,提供了统一的上传下载demo,在WelCome.ets中,如有问题可小窗我

在HarmonyOS中使用multiFormDataList进行POST请求上传文件及参数时遇到回调异常,可能原因包括:

  1. 请求格式错误:检查multiFormDataList中是否正确添加了所有必要的字段和文件,确保格式符合服务器要求。
  2. 网络问题:确认设备网络连接正常,且服务器地址可访问。
  3. 权限问题:确保应用已申请并获取了必要的网络访问权限及文件读写权限。
  4. 服务器响应:检查服务器是否对请求进行了正确响应,或是否有服务器端的错误。
  5. 异常处理:在回调中增加更详细的异常捕获和日志记录,以便分析问题。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部