HarmonyOS鸿蒙Next中axios或http请求上传文件,服务器会接受不到文件

HarmonyOS鸿蒙Next中axios或http请求上传文件,服务器会接受不到文件

使用axios或http两种方案请求上传文件,服务器会接受不到文件(文件是视频mp4格式,加载播放是没有问题的,上传就服务器接收不到文件)

sync uploadFile(path:string){
  ///data/storage/el2/base/haps/entry/cache/VIDEO_1725259887000.mp4  沙箱路径
  LogUtil.debug('测试网络请求uploadFile', path);
  let formData = new FormData()
  formData.append("file", path)
  let uploadUrl = 'http://xxxx'
  // 发送请求
  await axios.post<string, AxiosResponse<string>, FormData>(uploadUrl, formData, {
    headers: {
      'Authorization': 'xxxxxxxx'
    }, context: getContext(this), onUploadProgress: (progressEvent: AxiosProgressEvent): void => {
      console.info(progressEvent && progressEvent.loaded && progressEvent.total ? 
        Math.ceil(progressEvent.loaded / progressEvent.total * 100) + '%' : '0%');
    }
  }).then((res: AxiosResponse<string>) => { //{"resultCode":"500","resultMessage":"file视频文件不能为空"} 
    LogUtil.debug("测试人脸视频" + JSON.stringify(res.data));
    return JSON.stringify(res.data)
  }).catch((error: AxiosError) => {
    LogUtil.debug("测试人脸视频error:" + JSON.stringify(error));
  })
}

更多关于HarmonyOS鸿蒙Next中axios或http请求上传文件,服务器会接受不到文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

request.uploadFile只能上传cache目录下的文件,当前仅支持"internal"协议,对应在cache目录下

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-request-V13#requestuploadfile9

axios上传文件可参考如下链接的示例代码:

https://gitee.com/openharmony-sig/ohos_axios#%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6

可以在请求头中添加“multipart/form-data”试下。

更多关于HarmonyOS鸿蒙Next中axios或http请求上传文件,服务器会接受不到文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用axios或http请求上传文件时,服务器接收不到文件可能是由于以下原因:

  1. 请求头设置问题:上传文件时,请求头中必须包含Content-Type: multipart/form-data,并且需要正确设置boundary。如果请求头设置不正确,服务器可能无法解析文件数据。

  2. 文件数据格式问题:上传文件时,文件数据需要以FormData对象的形式发送。如果文件数据格式不正确,服务器可能无法识别文件。

  3. 文件大小限制:服务器可能对上传文件的大小有限制。如果文件超过服务器允许的最大大小,服务器可能会拒绝接收文件。

  4. 网络问题:网络连接不稳定或请求超时可能导致文件上传失败。确保网络连接正常,并适当调整请求超时时间。

  5. 服务器配置问题:服务器可能未正确配置以处理multipart/form-data请求。检查服务器配置,确保其能够正确处理文件上传请求。

  6. 代码实现问题:在代码中,确保正确构建FormData对象,并将其作为请求体发送。例如:

    const formData = new FormData();
    formData.append('file', file);
    
    const config = {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    };
    
    axios.post('https://example.com/upload', formData, config)
      .then(response => {
        console.log('File uploaded successfully');
      })
      .catch(error => {
        console.error('Error uploading file', error);
      });
    

    确保file变量是有效的文件对象。

  7. 跨域问题:如果客户端和服务器不在同一域名下,可能会遇到跨域问题。确保服务器配置了正确的CORS策略,允许客户端跨域请求。

通过检查上述问题,可以解决HarmonyOS鸿蒙Next中axios或http请求上传文件时服务器接收不到文件的问题。

在HarmonyOS鸿蒙Next中使用axios或http上传文件时,服务器接收不到文件,可能原因如下:

  • 请求头问题:未正确设置Content-Typemultipart/form-data,或未正确配置boundary
  • 请求体问题:文件数据未正确封装为FormData对象,或未正确附加到请求体中。
  • 服务器配置问题:服务器未正确处理multipart/form-data请求,或文件大小超出服务器限制。

解决方案:确保请求头正确设置,使用FormData封装文件,并检查服务器配置。示例代码如下:

const formData = new FormData();
formData.append('file', file);

axios.post('/upload', formData, {
    headers: {
        'Content-Type': 'multipart/form-data'
    }
}).then(response => {
    console.log(response);
}).catch(error => {
    console.error(error);
});

检查并调整上述步骤,确保文件上传成功。

回到顶部