当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/372634.html

相关文章:

  • 超文本标记语言(HTML)简介
  • 使用thymeleaf直接渲染字符串
  • Spring Boot整合发送QQ邮箱功能
  • Milvus向量数据库
  • python cls的使用
  • idea中maven下载依赖缓慢解决方法
  • JS 中的各种距离 scrollTop?clientHeight?
  • 继承-进阶-易错点
  • 【图论应用】使用多路图(multigraph)对上海地铁站点图建模,并解决最短路径问题
  • RabbitMQ安装配置,封装工具类,发送消息及监听
  • iOS接入Flutter
  • 【ubuntu】用户添加root权限
  • 设计通用灵活的LabVIEW自动测试系统
  • C# WinForm —— 35 StatusStrip 介绍
  • 如何应对生活中的不确定性:仁者安仁,知者利仁。
  • C#面:请解释C#接口的显式实现有什么意义
  • STM32项目分享:智能窗帘系统
  • 【算法-力扣】72. 编辑距离(动态规划)
  • Spring 系统架构图
  • 同三维T80005EHS-4K60 4K60 HDMI/SDI编码器
  • React state(及组件) 的保留与重置
  • flask返回的数据怎么是转义后的字符串啊
  • C++17并行算法与HIPSTDPAR
  • 【什么是几度cms,主要功能有什么】
  • 组合和外观模式
  • 设置服务器禁止和ip通信
  • 中文技术文档的写作规范(搬运)
  • 「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(一)
  • Python使用策略模式生成TCP数据包
  • 无文件落地分离拆分-将shellcode从文本中提取-file