本篇文章从应用角度出发给大家讲解一下鸿蒙客户端的图片怎么上传阿里OSS。 众所周知,目前OSS不提供客户端上传的SDK,文档上给出了一个服务端上传的方式:

  这就搞得我们很难受了,意味着在其它端写的上传方式不能复用了,CV大法失效只能手搓代码,但是生活还得继续,叫上后端一起盘他!!(文章太长影响阅读性,要源码可以私信我)

附OSS文档地址:

鸿蒙环境服务端签名直传_对象存储(OSS)-阿里云帮助中心

在开始之前,首先我们应该明确思路,按照以下的三个大步骤去执行,我会在每个大步骤里面拆解详细的步骤供大家食用(本篇文章以上传图片到OSS为例)。

创建沙盒工具类——调用后端接口——使用PutObject方式上传

一、创建沙盒工具类:

1、在工具类文件下新建一个文件,这是我们的沙盒环境用以拿到文件的具体地址,这个文件地址是数组字符串类型,上图:

2、继续上一步的步骤,封装一个多媒体辅助类,用来调用相册并规定选择图片的上限:

3、准备工作做好了,我们直接在需要上传图片的地方去使用封装好的函数,直接调用PictureSelectorUtils,第一个参数是选择的图片最多数量。

这样就能拿到所选择的图片在真机上的具体路径,前文有提到是一个数组字符串。现在所有我们前端的准备工作已经做好了,可以进入跟服务器交互的场景了。

二、调用后端接口

这一步主要是后端工作,原理是我们通过后端提供的接口去拿服务端的签名,上文提到的OSS文档地址有比较详细的服务端教程,这里我们就不展开了,直接上图:

因为拿到的文件/图片路径是一个数组,所以就循环去调用接口拿每个图片对应的签名,这里接口参数分别对应是否公有,路径,图片类型

ossPath:

getContentType:

这些方法需要跟当时的业务要求来有所改变,比如储存在OSS的路径不同,ossPath组装的形式也会有所不同,需要灵活变通。特别注意:data是后面上传需要用的数据

三、使用PutObject方式上传

接下来我们就进入最后一步了,上传文件到OSS。这一步OSS文档是提供了模版,老规矩还是先上图:

在上面提供的变量中,localPath是第二步后端返回的OSS地址(这个地址就是你图片上传的地址),在我们没有用PutObject方式上传之前,这个地址打开肯定是空白的,值得注意的是,最后一步上传并不会返回路径地址,只会返回成功\失败,所有我们需要用到之前的地址,也就是loaclPath。当httpResponse.responseCode === 200 时,loaclPath打开就能看到你上传到OSS的图片了!

总结:其实感觉服务端的接口编写还要复杂一点,只能幸亏后端小伙伴去努努力了,这里我们前端就表示爱莫能助~整个逻辑是比较清晰的,如果有任何不对或者有疑问的地方欢迎在评论指出,我会及时来修改。全干货!收藏不迷路!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐