HarmonyOS 如何上传本地图片

使用axios网络框架,如何上传本地图片?本地图片地址file://media/Photo/3/***.jpg已经获取,想用FormDatas设置一下,是否需要根据url先创建一个file对象?还是转换成一个地址?直接用file://地址,报错ERR_BAD_OPTION_VALUE,the parameters check fails Parse config files error

期待结果:希望能够正常上传本地图片,接口可以访问通过。

let formData = new FormData()
formData.append('file', 'file://media/Photo/3/***.jpgt');

// 发送请求
axios.post<string, axiosResponse<string>, FormData>('http//*****' formData, {
  //  headers: { 'Content-Type': 'multipart/form-data' },
  context: getContext(this),
  onUploadProgress: (progressEvent: axiosProgressEvent): void => {

  },
}).then((res: axiosResponse<string>) => {

}).catch((err: axiosError) => {
  BAD_OPTION_VALUE,the parameters check fails   Parse config files error
})
HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

axios上传类型支持uri和ArrayBuffer ,下面demo中value是拿到的URI,header请求头也设置一下,放开注释:

// 转化为internal://cache
fs.open(value, fs.OpenMode.READ_ONLY).then((file) => { // READ_ONLY READ_WRITE
  let newPath = this.context.cacheDir + `/test.png`;
  fs.copyFile(file.fd, newPath).then(() => {
    console.info("applog:copy file succeed");
    let realUri = "internal://cache/"+newPath.split("cache/")[1];
    console.log('realUri'+JSON.stringify(realUri))
  }).catch((err:BusinessError) => {
    console.info("applog:copy file failed with error message: " + err.message + ", error code: " + err.code);
  });
}).catch((err:BusinessError) => {
  console.info("applog:open file failed with error message: " + err.message + ", error code: " + err.code);
})

// 转化为Arraybuffer
let file = fs.openSync(value, fs.OpenMode.READ_ONLY)
const imageSource = image.createImageSource(file.fd);
fs.closeSync(file)
const imagePackApi = image.createImagePacker()
let packOpts: image.PackingOption = { format: "image/png", quality: 100 }
imagePackApi.packing(imageSource, packOpts)
  .then(readBuffer => {
    let bufferArr = new Uint8Array(readBuffer);
    let help =new util.Base64Helper()
    let base64 = help.encodeToStringSync(bufferArr)
    console.log('base64'+JSON.stringify(base64))
    console.log('bufferArr'+JSON.stringify(bufferArr))
  }).catch((err:BusinessError) => {
  console.error('PhotoViewPicker.select failed with err: ' + err);
})
分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS如何获取手机本地图片
643浏览 • 1回复 待解决
如何获取手机本地图片
441浏览 • 1回复 待解决
HarmonyOS Image加载本地图片咨询
457浏览 • 1回复 待解决
如何保存本地图片到相册中
1062浏览 • 1回复 待解决
ArkUI(eTS)如何实现本地图片保存?
7116浏览 • 1回复 待解决
服务卡片设置本地图片显示空白
7417浏览 • 2回复 已解决
识别本地图片的方法有哪些?
394浏览 • 1回复 待解决
HarmonyOS如何实现图片上传
455浏览 • 1回复 待解决
文件上传本地路径如何获取
416浏览 • 1回复 待解决
HarmonyOS图片上传相关问题
471浏览 • 1回复 待解决
HarmonyOS如何上传图片到模拟器相册
912浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
251浏览 • 1回复 待解决
如何HarmonyOS中实现图片上传功能?
216浏览 • 0回复 待解决