鸿蒙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,并沿用其现有用法和特性。

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 06:36:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 06:36:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 06:36:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 06:36:04       20 阅读

热门阅读

  1. .NETCORE 微软企业登录

    2024-06-15 06:36:04       8 阅读
  2. bash和sh区别

    2024-06-15 06:36:04       6 阅读
  3. 从零手写实现 nginx-23-directive IF 条件判断指令

    2024-06-15 06:36:04       8 阅读
  4. svm 超参数

    2024-06-15 06:36:04       6 阅读
  5. shell判断语句练习

    2024-06-15 06:36:04       6 阅读
  6. MySQL周内训参照2、DDL与DML语句

    2024-06-15 06:36:04       9 阅读
  7. Scala学习笔记12: 高阶函数

    2024-06-15 06:36:04       7 阅读
  8. 详解 Flink CDC 的介绍和入门案例

    2024-06-15 06:36:04       4 阅读
  9. Nginx之Stream(TCP/UDP)负载均衡

    2024-06-15 06:36:04       7 阅读
  10. Sklearn简介、安装教程、入门学习

    2024-06-15 06:36:04       8 阅读