0

これは私のシナリオです:

  1. URL から取得した画像を Parse バックエンドに保存する必要があります。
  2. Parse バックエンドから同じ画像を取得し、iOS の PFImageView に表示します。

これは私がしたことです:

  1. 画像を 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);
    });
    
  2. 次に、関連オブジェクトの PFFile フィールドをクリックして、PFFile がバックエンドに保存されていることを確認しました。ファイルをクリックすると、画像ではなく次のテキストが表示されます。

    {"_ApplicationId":"xxxx","_JavaScriptKey":"xxxx","_ClientVersion":"js1.6.14","_InstallationId":"xxxx","_SessionToken":"r:xxxx"}
    
  3. 同じ画像を 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 に変換してからファイルを保存しています。

4

1 に答える 1

0

解決済み:

問題は使用にありvar imageInBase64 = image.data().base64;ました。私の代替クラウドコードは次のとおりです。

    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){
      format = image.format();
      return image.data();

    }).then(function(buffer)){
      /* Save image as parse file */
      var imageInBase64 = buffer.toString("base64");
      var parseFile = new Parse.File(imageName + "." + format, {base64: imageInBase64});
      return parseFile.save();

    }).then(function(parseFile){
      /* Set PFFile to an object */
      newEvent.set("eventImage", parseFile);
    }); 
于 2016-02-12T22:40:15.867 に答える