HarmonyOS 鸿蒙Next API9 如何处理 阿里云 OSS 图片的上传

HarmonyOS 鸿蒙Next API9 如何处理 阿里云 OSS 图片的上传 如题:API9 如何处理 阿里云 OSS 图片的上传

11 回复

让内嵌的h5页面去做上传阿里云OSS图片功能。

步骤1:在鸿蒙原生里,用PhotoViewPicker得到图片的uri(沙箱路径)

import picker from '@ohos.file.picker';
let uri = photoSelectResult.photoUris[0];

步骤2:在鸿蒙原生里,根据uri的(沙箱路径)读取的内存中,得到file.fd(内存文件id)

import fs from '@ohos.file.fs';
let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);//file.fd
let buffer = new ArrayBuffer(4096);
let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file);

步骤3:根据file.fd,将内存文件拷贝到真实路径,注意该路径图片名称最好是随机数,如果重复的话,只会首次拷贝成功。

let context = getContext(this) as common.UIAbilityContext;
let pathDir = context.filesDir;
await fs.copyFile(file.fd, pathDir + '/test随机数.jpg')

步骤4:当拷贝成功后, 将新的图片地址发送给h5进行阿里云OSS上传操作

pathDir + ‘/test随机数.jpg’

注意,这里需要权限

"ohos.permission.WRITE_MEDIA"

更多关于HarmonyOS 鸿蒙Next API9 如何处理 阿里云 OSS 图片的上传的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


执行拷贝文件,就不执行,下一步了,

try catch一下,看看报什么错。

你是怎么把图片传给阿里云oss,图片地址发给h5 ???

提供一个方案给你,前提条件是要跟后端沟通好,提供必要的接口

参考这篇文章:阿里云OSS客户端直传

使用该文档中的:服务端生成PutObject所需的签名URL

留名,目前也是无解

const HEADER: Record<string, string> = { ‘content-type’: ‘multipart/form-data’,‘set-cookie’: cookie};

header 后台拿不到怎么办

大佬, event.result, handleFile, 这个方法,怎么上传到公司oss的目录的

问下,这个APP filesDir 的路径怎么才能找到,搞了很久都没找那当前应用的位置,写文件返回是成功了,但文件怎么才能找到呀

在HarmonyOS鸿蒙Next API9中处理阿里云OSS(对象存储服务)图片上传,可以通过以下步骤实现:

  1. 配置阿里云OSS SDK:首先,确保你的HarmonyOS应用已经集成了阿里云OSS的SDK。由于HarmonyOS有其独特的包管理和依赖注入机制,你需要从阿里云官方获取适用于HarmonyOS的SDK版本,并按照其文档进行配置。

  2. 获取上传凭证:在上传图片之前,你需要从服务器获取一个临时的上传凭证(包括AccessKeyId、AccessKeySecret、SecurityToken、OSS的Bucket名称、Region以及用于签名上传策略的STSToken等)。这些凭证通常通过你的应用服务器与阿里云OSS服务进行交互获取。

  3. 构建上传请求:使用获取到的凭证和图片文件,构建OSS的上传请求。这通常涉及设置上传的Object Key(文件名)、设置文件内容类型等。

  4. 执行上传操作:通过HarmonyOS的网络请求API(如HttpURLConnection或第三方网络库)发送构建的上传请求,将图片文件上传到指定的OSS Bucket中。

  5. 处理上传结果:根据OSS服务返回的响应,处理上传结果。如果上传成功,OSS服务会返回一个200 OK的HTTP状态码以及相关的上传信息。

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

回到顶部