HarmonyOS 鸿蒙Next请问上传图片接口的参数需要设计成什么格式?

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

HarmonyOS 鸿蒙Next请问上传图片接口的参数需要设计成什么格式?

,目前有个接口, 参数名为files, 类型为File,  通过apifox 调用没问题, 但是我使用  request   http   rcp   axios 全部都上传失败,  都是按官方的格式传递, 接口都是报错 500   begin -1, end 20, length 20.


更多关于HarmonyOS 鸿蒙Next请问上传图片接口的参数需要设计成什么格式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

参考下这个demo

import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
import axios, { AxiosError, AxiosProgressEvent, AxiosResponse } from '@ohos/axios'
import { FormData } from '@ohos/axios'
import { common } from '@kit.AbilityKit';

@Entry
@Component
struct Index {
  @State message: string = 'hello World';
  context = getContext(this) as common.UIAbilityContext

  build() {
    Button('选择').onClick(() => {
      let uris: Array<string> = [];
      let documentViewPicker = new picker.PhotoViewPicker();
      documentViewPicker.select({
        MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE,
        maxSelectNumber: 1
      }).then((photoSelectResult: picker.PhotoSelectResult) => {
        uris = photoSelectResult.photoUris;
        console.info('photoViewPicker.select to file succeed and uris are:' + uris);
        let fileSource = fs.openSync(uris[0], fs.OpenMode.READ_ONLY);
        let fileDes =
          fs.openSync(`${this.context.cacheDir}/1.jpg`, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
        fs.copyFileSync(fileSource.fd, fileDes.fd)
        fs.closeSync(fileSource);
        fs.closeSync(fileDes);

        let formData = new FormData()
        formData.append('file', `${this.context.cacheDir}/1.jpg`); //uri支持传入沙箱路径
        // 发送请求
        // 发送请求
        axios.post<string, AxiosResponse<string>, FormData>('https://www.xxx.com/upload', formData, {
          headers: { 'Content-Type': 'multipart/form-data' },
          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>) => {
          console.info("result" + JSON.stringify(res.data));
        }).catch((err: AxiosError) => {
          console.error("error:" + JSON.stringify(err));
        })
      })
    })
  }
}

更多关于HarmonyOS 鸿蒙Next请问上传图片接口的参数需要设计成什么格式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢,已经解决了, 是路径写错了

建议提供 代码截图 和 错误信息截图 

在HarmonyOS鸿蒙Next系统中,上传图片接口的参数设计通常需要考虑以下几个核心要素,以确保接口的高效性和易用性:

  1. 图片文件:作为接口的主要参数,图片文件通常以二进制数据流(byte array)的形式传递。这样可以直接处理原始图片数据,避免在传输过程中因格式转换导致的质量损失。

  2. 文件信息:除了图片数据本身,还可以包含文件的元数据,如文件名(string类型)、文件类型(MIME类型,如image/jpeg、image/png等)、文件大小(long类型,单位字节)等,这些信息有助于接收端正确解析和处理图片文件。

  3. 附加参数:根据具体业务需求,可能还需要传递一些附加参数,如用户ID(用于标识上传者)、图片描述(string类型,用于存储图片的相关说明)等。

综上所述,上传图片接口的参数格式可以设计为一个包含多个字段的数据结构,如JSON对象,其中包含二进制图片数据(Base64编码或直接以二进制流形式传输,取决于接口设计)、文件信息(文件名、文件类型、文件大小)以及任何必要的附加参数。

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

回到顶部