これは私のシナリオです:
- URL から取得した画像を Parse バックエンドに保存する必要があります。
- Parse バックエンドから同じ画像を取得し、iOS の PFImageView に表示します。
これは私がしたことです:
画像を Parse バックエンドに保存する:
promise = promise.then(function(){ /* Download image */ return Parse.Cloud.httpRequest({ url: imageUrl }); }).then(function(imageResponse){ /* Use parse-image cloud module to get image */ var image = new Image(); return image.setData(imageResponse.buffer); }).then(function(image){ /* Save image as parse file */ var imageInBase64 = image.data().base64; var parseFile = new Parse.File(imageName, {base64: imageInBase64}); return parseFile.save(); }).then(function(parseFile){ /* Set PFFile to an object */ newEvent.set("eventImage", parseFile); });
次に、関連オブジェクトの PFFile フィールドをクリックして、PFFile がバックエンドに保存されていることを確認しました。ファイルをクリックすると、画像ではなく次のテキストが表示されます。
{"_ApplicationId":"xxxx","_JavaScriptKey":"xxxx","_ClientVersion":"js1.6.14","_InstallationId":"xxxx","_SessionToken":"r:xxxx"}
同じ画像を PFImageView に表示します。
@IBOutlet weak var eventImage: PFImageView! if let imageFile = selectedEvent.eventImage as PFFile { eventImage.image = UIImage(named: "Event Image") eventImage.file = imageFile eventImage.loadInBackground() }
残念ながら、これは機能しません。PFImageView は空白です。imageFile.url と imageFile.name に対して次の結果が得られるという事実に基づいて、PFFile がダウンロードされたようです。
imageFile.url : https://files.parsetfss.com/xxxx/tfss-xxxx imageFile.name: tfss-xxxx
ここでの問題は、クラウド コードで画像を Parse にアップロードする方法にあるのではないかと考えています。ここでは、base64 に変換してからファイルを保存しています。