HarmonyOS 鸿蒙Next AXIOS 上传文件数据传递

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next AXIOS 上传文件数据传递
<markdown _ngcontent-jln-c147="" class="markdownPreContainer">

AXIOS使用multipart/form-data 上传文件,如何传递其他参数啊?

深色代码主题
复制
let formData = new FormData()
let file2 = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
try {
  // 读取
  let stat = fs.lstatSync(filePath);
  let buf2 = new ArrayBuffer(stat.size);
  fs.readSync(file2.fd, buf2); // 以同步方法从流文件读取数据。
  fs.fsyncSync(file2.fd);
  fs.closeSync(file2.fd);

// formData.append(‘upload_file’, file2.name); formData.set(‘name’, ‘upload_file’); formData.set(‘filename’, file2.name); formData.set(‘file’, buf2); // formData.append(‘file’, file2); } catch (err) { console.info(‘err:’ + JSON.stringify(err)); }

let ss: Record<string, string> = { ‘upload_file’: file2.name } // 发送请求 axios.post<string, AxiosResponse<string>, FormData>(url, formData, { headers: xHeader, context: AppUtil.getContext(), // params: JSON.stringify(ss), onUploadProgress: (progressEvent: AxiosProgressEvent): void => { console.info(progressEvent && progressEvent.loaded && progressEvent.total ? Math.ceil(progressEvent.loaded / progressEvent.total * 100) + ‘%’ : ‘0%’); }, }).then((res: AxiosResponse<string>) => { AxiosHttp.handleRespSuccess(res, call); }).catch((error: AxiosError) => { AxiosHttp.handleError(error, call); })

像上面这段代码在使用axios框架form表单上传文件时,文件名/文件类型等参数该如何传递啊?

</markdown>

更多关于HarmonyOS 鸿蒙Next AXIOS 上传文件数据传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以通过修改FormData实例来实现;

FormData介绍

FormData对象是axios内部自定义的类型,用以将数据编译成键值对,以便用来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据 (keyed data)。

深色代码主题
复制
import { FormData } from '[@ohos](/user/ohos)/axios'

let formData: FormData = new FormData();

formData.append(“username”, “Groucho”); formData.append(“accountnum”, “123456”); formData.append(“accountnum”, “123456”); formData.append(‘file’, buf2, { filename: ‘text.txt’, type: ‘text/plain’}); 设置多部分表单数据的数据名称和数据类型类型

上面的示例创建了一个 FormData 实例,包含"username"、"accountnum"字段。使用 append() 方法时,可以通过第三个可选参数设置多部分表单数据的数据名称和数据类型

详情可以参考以下链接: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

更多关于HarmonyOS 鸿蒙Next AXIOS 上传文件数据传递的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,使用AXIOS上传文件数据通常涉及以下几个步骤:

  1. 文件读取:首先,需要通过鸿蒙的文件系统API读取本地文件数据。这通常涉及使用FileProvider或相应的文件读取接口来获取文件的字节流。

  2. 数据封装:读取到的文件数据需要封装成AXIOS能识别的格式。通常,这可以通过创建一个FormData对象,并使用append方法将文件数据(以及可能的文件名和MIME类型)添加到该对象中。

  3. 配置请求:设置AXIOS请求的配置,包括URL、请求方法(通常为POST)、请求头(特别是Content-Type,通常设置为multipart/form-data)以及封装好的FormData对象作为请求体。

  4. 发送请求:调用AXIOS的post方法发送请求,传递配置对象。

示例代码(简化版,未包含具体文件读取实现):

let formData = new FormData();
// 假设fileData是通过鸿蒙API读取到的文件数据,fileName是文件名
formData.append('file', fileData, fileName);

axios.post('your-upload-url', formData, {
    headers: {
        'Content-Type': 'multipart/form-data'
    }
}).then(response => {
    // 处理响应
}).catch(error => {
    // 处理错误
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部