【问题标题】:How to display an image uploaded using cloud code in PFImageView如何在 PFImageView 中显示使用云代码上传的图像
【发布时间】:2016-02-12 13:26:09
【问题描述】:

这是我的场景:

  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 只是空白。看起来 PFFile 是基于以下事实下载的:imageFile.url 和 imageFile.name:

imageFile.url:https://files.parsetfss.com/xxxx/tfss-xxxx imageFile.name: tfss-xxxx

我想知道这里的问题是否是图像如何上传到云代码中的 Parse。这里我将其转换为base64,然后保存文件。

【问题讨论】:

    标签: swift parse-platform parse-cloud-code pfimageview


    【解决方案1】:

    已解决:

    问题在于使用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);
        }); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 2017-06-05
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多