背景介绍开发uni app项目时,需要将Android本机插件返回的图像上传到服务器。
uni app提供了上传图像的api。 官方网站api:uploadFile,插件返回的图像地址是手机内部的地址:
如果按照/storage/emulated/0/Android/data/./files/picture/pic.jpg和官方网站api进行使用,则上载到服务器时不会成功
uni.uploadfile (URL : upload URL、filePath、name: 'file'} )但是用官网的实例代码,选择手机图片就可以了。
uni.chooseimage(success: ) chooseimageres )={ consttempfilepaths=chooseimageres.tempfile paths; uni.uploadfile ((URL : ' https://www.example.com/upload ),//是示例,不现实的接口地址file path : tempfile paths name 3: formdata : { ' user ' : ' test ' },success:(uploadfileRES )={console.log ) uploadfileRES.data} }; ); }; ); 二、问题分析通过比较路径,发现uni.chooseImage选择的图片返回的地址如下
_ doc/uni app _ temp _ 1619320025913/compressed/1619320070413 _ 161932006909 _ 1619320053470.jpg
根据官方文档,我开始觉得filePath是资源路径,是字符串类型,对Android本机路径这一APP没有访问权限,于是尝试各种方法来更改路径也是不行的。
在网上搜索找到的各种各样的是通过uni.chooseImage方式上传的图像
三、解决问题最后的帖子里看到了网友的回复。 (站点现在找不到),必须添加到路径之前。 ) “file://” + filePath这样就可以了。 虽然还不太清楚原理,但是问题解决了,非常开心。 果然我做饭太多了。 结果,这个问题马上就要困扰一天了。 uni app相关问题的资料太少了。
补充
要将uni内部路径转换为外部可用路径:
file path=' _ doc/uni app _ temp _ 1619235374484/compressed/161923652423 _ 1619236644137.jpg '
使用uni内部的API:
plus.io.convertlocalfilesystemurl (文件路径) )。