我正在使用图库访问要上传的图像。当我直接上载图像uri时,我没有任何问题,但是当我需要使用fileEntry(对于多部分上载)时,jpgs不会从它们的uri中返回fileEntry。 注:我使用异步:等待,但我有一个标准的承诺Ionic window.resolveLocalFileSystemURL不适用于jpgs
例如,以下是我使用来获取图像的URI
var imageUri = await this.takePicture(Object.assign(this.defaultOptions,{sourceType:this.camera.PictureSourceType.SAVEDPHOTOALBUM}));
let newFile = new File([imageUri], "filename");
this.uploadFile(newFile);
下面的代码相同的问题是返回imageUri
try{
return await this.camera.getPicture(options);
}catch(err){
...handle error
}
为
takePicture()
代码
上述此代码成功上传既png
和jpg
文件。
下面的这段代码无法仅为jpg
文件检索fileEntry。
/**
* Returns a file entry for the image uri provided
* @param imgUri image Uri to get file entry for
*/
private async getFileFromImageUri(imgUri){
try{
var fileEntry = await this.resolveFileAsPromise(imgUri);
}catch(err){
// fileEntry = await this.createNewFileEntry(imgUri);
this.presentToast('Error while selecting image.'); //TODO: images that are .jpg seem to have trouble being resolved to a file.
}
return fileEntry;
}
resolveFileAsPromise(ImgUri);
是一个承诺包装器window.resolveLocalFileSystemURL(imgUri, resolve, reject);
它返回以下错误
FileError {code: 5}
只有JPG格式。错误代码意味着jpg的格式有问题吗?这对我来说没有任何意义,因为所有这些都是在内部处理的。图像没有损坏或任何东西,所以它让我相信,可能的错误代码是误导? error code docs
有没有人遇到过这个问题?我正在测试一个活的android设备(不是模拟器)。
我觉得上面的演示表明图像的uri不是问题,因为它可以上传图像,当我不需要进入fileEntry时。但是,当我这样做时,它仅适用于特定文件类型png
s。
我只在Android设备上遇到同样的问题。我认为'JPEG'不是导致问题的原因。 – JeffMinsungKim
你认为问题是什么? @JeffMinsungKim – user3331142
@JeffMinsungKim我找到了一个解决方案。问题是由jpgs camera.getPicture返回的路径不是完整路径(pngs返回完整路径:include'file://') – user3331142