2016-05-04 3 views
0

ギャラリーから選択した画像のファイル名とネイティブパスを取得します。以下のコードはAndroidで完璧に動作しますが、IOSではnullが返されます。ギャラリーからの画像は、AppceleratorのIOSのnullオブジェクトを与えます

Titanium.Media.openPhotoGallery({ 
success : function(event) { 
    selectedImage = event.media; 
    //Ti.API.info("image : " + JSON.stringify(selectedImage)); --> Returns {} 
    if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) { 
     //Ti.API.info("selectedImage : " + JSON.stringify(selectedImage)); --> Returns {} 
     //Ti.API.info("selectedImage : " + JSON.stringify(selectedImage.nativePath)); --> Returns null 
     //Ti.API.info("selectedImage.file.name : " + JSON.stringify(selectedImage.file.name)); --> Throws error 
    } 
} 
}); 

fileName、ImageType、およびnativePathを取得する方法はありますか?

ありがとうございました。

答えて

2

これまで見てきたように、JSONはBLOBを直列化してそのプロパティをすべて表示することはできません。ドキュメンテーションにもかかわらず、あなたがイオスのネイティブパスを得ることはできません。

Titanium.Media.openPhotoGallery({ 
    success : function(e) { 
     Ti.API.info ("Got image:"); 
     Ti.API.info (" width:  " + e.media.width); 
     Ti.API.info (" height:  " + e.media.height); 
     Ti.API.info (" pixels:  " + e.media.size); 
     Ti.API.info (" bytes:  " + e.media.length); 
     Ti.API.info (" mimeType: " + e.media.mimeType); 
     Ti.API.info (" nativePath: " + e.media.nativePath); 
    } 
}); 

あり、画像のブロブに関連付けられたファイルのプロパティが(それは間違いなくnullではない)であるが、私は、そのファイルオブジェクトのすべてのプロパティにアクセスすることはできません私に

[INFO] Got image: 
[INFO] width:  3000 
[INFO] height:  2002 
[INFO] pixels:  6006000 
[INFO] bytes:  4752033 
[INFO] mimeType: image/jpeg 
[INFO] nativePath: null 

を与えます。ご覧のように、nativePathはnullとして戻ってきます。

つまり、ネイティブパスが必要ですか?私はイメージデータを取得し、ImageFactoryモジュールを使用してダウンサンプリングし、HTTP経由でサーバーに送信することができました。

+0

'nativePath'(および他のいくつかのBlobプロパティ)は、Blobがディスク上のファイルから来た場合にのみ利用可能です。フォトギャラリーの場合は、フォトギャラリーの元のファイルにアクセスできないため、BLOBはメモリ内にのみ存在します。 –

+0

実際、選択した画像のimageNameを表示したいのですが、名前を取得する方法はありますか? 私が望むフローは、ユーザーがギャラリーから画像を選択 - >画像をサーバーにアップロード - >アプリケーションにアップロードされているImageName(ファイル名)を表示します。 –

関連する問題