当图像文件名包含空格时,Phonegap camera getPicture在Android中失败

当图像文件名包含空格时,Phonegap camera getPicture在Android中失败,android,cordova,phonegap-plugins,Android,Cordova,Phonegap Plugins,我的phonegap摄像头插件版本为0.3.4,phonegap cli版本为4.1.2-0.22.10,android phonegap平台版本为3.6.4,在config.xml中构建版本为3.5.0,在android 4.x上进行测试,下面是我从gallery或dropbox获取三星手机图像的代码片段: navigator.camera.getPicture( uploadPhoto, function(message) { console.log("Get Picture Faile

我的phonegap摄像头插件版本为0.3.4,phonegap cli版本为4.1.2-0.22.10,android phonegap平台版本为3.6.4,在config.xml中构建版本为3.5.0,在android 4.x上进行测试,下面是我从gallery或dropbox获取三星手机图像的代码片段:

navigator.camera.getPicture(
uploadPhoto,
function(message)
{
  console.log("Get Picture Failed:"+ message);
}
,
{
  quality: 50,
  allowEdit:false,
  correctOrientation: true,
  targetWidth: 800,
  destinationType: navigator.camera.DestinationType.FILE_URI, 
  sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
}
);
当我从图库中选择图像时,无论选择的目标类型是什么,它总是采用本机的_uri(内容://),而不是文件_uri(文件://)。但是,当应用程序试图通过dropbox访问图像时,返回的uri总是文件uri,而与所选的目标类型无关。现在,

  • 如果文件名中没有像“Photo7.jpg”这样的空格,那么 适用于所有情况
  • 如果文件名中有空格,如“Photo 7” 如果它驻留在库中,那么它就可以正常工作,因为总是使用本机的uri,这样就消除了空间。请注意,文件名中仍然包含空格,但getpicture方法未使用该文件
  • 现在,当应用程序试图访问相同的图像“照片7”时,问题就出现了 通过dropbox新建.jpg。在这种情况下,返回的uri总是file_uri,并且包含空格。这使camera api的getpicture方法失败,并执行失败回调,消息为“Get Picture Failed:无法创建位图!”

有没有办法通过调整phonegap/cordova代码来容纳空间?还有什么办法可以对_uri或其他东西进行编码吗?谢谢你的帮助

必须使用JS encodeURI函数对url进行编码。
有关详细答案,请参阅下面的答案

这是一个URI:您是否尝试过将空格编码为
%20
+
?@MarcB谢谢Marc!但在phonegap camera api的情况下,只有在成功的情况下,getpicture方法才会抛出URI(魔法发生在驻留在getpicture()中的本机代码中)。如果getpicture()失败,我无法修改uri,我只会得到错误消息。因此,除非我接触phonegap api中的本机代码,否则我将无法对uri进行编码。那就是我需要帮助的地方。