鸿蒙Arkts上传图片并获取接口返回信息

需求:

选择相册图片后,将文件上传到服务器,接口会返回图片地址。

问题:

1、鸿蒙自带的文件上传返回值只会返回上传状态,不会返回接口返回信息。

类似问题 HarmonyOS上传文件以及权限授权_harmonyos中axios上传文件-CSDN博客

2、用axios上传

        2.1、接口不通,提示ERR_BAD_OPTION_VALUE 

        2.2、接口通了,报错500

具体实现:

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


let context = getContext(this) as common.UIAbilityContext;
const photoSelectOptions = new picker.PhotoSelectOptions();
const photoViewPicker = new picker.PhotoViewPicker();
// 过滤选择媒体文件类型为IMAGE
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
// 选择媒体文件的最大数目
photoSelectOptions.maxSelectNumber = 1; 

photoViewPicker.select(photoSelectOptions).then(async (photoSelectResult) => {
    //当前文件临时地址
    this.userImg = photoSelectResult.photoUris[0]   

    fs.open(uri, fs.OpenMode.READ_ONLY).then((file)=>{
        let fileName = context.cacheDir + '/' + file.name
        // 复制文件到缓存目录下
        fs.copyFile(file.fd, fileName).then(async()=>{

        // 上传
        let formData = new FormData()
        formData.append('userImageFile', "internal://cache/"+ file.name)
        formData.append('userName', 'user')
        formData.append('source', '1')    //这里值必须为string ,2.2报错原因

        const uploadUrl = 'https://上传地址'

        axios.post<string, AxiosResponse<返回值类型>, FormData>(uploadUrl, formData, {
            //这俩必须有 其他看需求
            
            headers: { 'Content-Type': 'multipart/form-data'},
            context: getContext(context) //必须加这句 2.1报错的原因
        
        }).then(async(res: AxiosResponse<返回值类型>) => {
            console.info("result" + JSON.stringify(res.data));
            this.userImage = res?.data?.result
                      
        }).catch((err: AxiosError) => {
            console.error("error:" + JSON.stringify(err));
        })
    })
})

参考链接:

华为开发者论坛实例

华为开发者文档-request使用

ohos_axios: 本库基于Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值