HarmonyOS 鸿蒙Next request.uploadFile文件上传的一些问题咨询

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

HarmonyOS 鸿蒙Next request.uploadFile文件上传的一些问题咨询

 async uploadAnImage(url: string, fileArr: request.File[]) {
console.log(‘fileArr’,json.stringify(fileArr))
const files: Array<request.File> = fileArr
console.log(“FileUpload:”, JSON.stringify(“开始准备文件上传”))
// 开始准备上传图片,需要两个参数,一个是上下文对象,一个是上传的配置
const res = await request.uploadFile(getContext(), {
url: ‘xxx’,
method: ‘POST’,
header: {
‘Accept’:/,
“Content-Type”: ‘multipart/form-data’,
“Access-Token”: <span class="hljs-number">85</span>f511b9c3beb9f8628f8102d7ba191319362d48978  // 看需求,是否需要携带token
},
files,
data: [  { name: ‘test’, value: ‘111’ }]
})

<span class="hljs-comment">// 这里是监听上传的进度</span>
res.on(<span class="hljs-string">"progress"</span>, async (progress, totalSize) =&gt; {
  console.info(<span class="hljs-string">"当前上传进度为:"</span>, `${progress / totalSize * <span class="hljs-number">100</span>}%`)
  <span class="hljs-comment">// 如果上传大小等于总大小,则说明上传完成</span>
  <span class="hljs-keyword">if</span> (progress === totalSize) {
    promptAction.showToast({ message: <span class="hljs-string">"图片上传成功"</span> })
  }
})

<span class="hljs-comment">// 这里是监听上传响应的标头</span>
res.on(<span class="hljs-string">"headerReceive"</span>, (header) =&gt; {
  <span class="hljs-comment">// 打印标头信息, 这里包含上传的图片访问地址</span>
  console.log(<span class="hljs-string">"FileUpload:"</span>, <span class="hljs-built_in">JSON</span>.stringify(header))
})
<span class="hljs-keyword">let</span> upFailCallback = (taskStates: <span class="hljs-built_in">Array</span>&lt;request.TaskState&gt;) =&gt; {
  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; taskStates.length; i++) {
    console.info(<span class="hljs-string">"upOnFail taskState:"</span> + <span class="hljs-built_in">JSON</span>.stringify(taskStates[i]));
  }
};
res.on(<span class="hljs-string">'fail'</span>, upFailCallback);
<span class="hljs-comment">// res.on('fail', (err) =&gt; {</span>
<span class="hljs-comment">//   console.log('上传错误---&gt;', JSON.stringify(err))</span>
<span class="hljs-comment">// })</span>

}

 upOnFail taskState:{“path”:"/data/storage/el2/base/haps/entry/cache/1732534131218_780.jpg",“responseCode”:0,“message”:""}

 报错 请问这是什么情况?

1 回复

针对HarmonyOS 鸿蒙Next request.uploadFile文件上传的问题,以下是一些可能的解决方案:

  1. 检查权限配置

    • 确保在module.json5配置文件中已正确声明所需的权限,如"ohos.permission.INTERNET",以允许应用执行网络请求。
  2. 验证文件路径

    • 确保选择的文件路径正确无误,特别是注意鸿蒙系统的文件系统可能与Android或iOS有所不同。
    • 文件上传功能仅支持上传应用缓存文件路径(cacheDir)下的文件。
  3. 构建正确的上传请求

    • 使用ohos.request模块中的uploadFile方法构建上传请求。
    • 确保请求配置正确,包括URL、请求头(header)、文件数据(files)等。
  4. 处理服务器响应

    • 分析服务器返回的响应码和错误信息,以确定上传失败的具体原因。
  5. 调试和日志

    • 使用调试工具和日志记录来跟踪上传过程中的问题,以便进行故障排除。

如果以上步骤均无法解决问题,可能是API在特定版本或上下文中存在限制或变更。此时,建议查阅最新的官方文档或联系官网客服获取进一步帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部