2

我正在开发一个应用程序,用户可以通过 Web 界面将图像存储在 Parse 上。然后可以在本机 iOS 应用程序中显示这些图像。

图像通过 Parse REST API 上传到 Parse;然后将存储图像的 URL 保存为 a 的字符串属性PFObject。这是我为此目的使用的 javascript 代码:

function postImageToParse(fileName, file, onSuccess, onError) {

    file = file.replace(/^data:image\/(png|jpeg|jpg);base64,/, "");

    var binaryImg = atob(file);
    var length = binaryImg.length;
    var ab = new ArrayBuffer(length);
    var ua = new Uint8Array(ab);
    for (var i = 0; i < length; i++) {
        ua[i] = binaryImg.charCodeAt(i);
    }
    var blob = new Blob([ab],{type:"image/jpeg"});

    var serverUrl = 'https://api.parse.com/1/files/' + basename(fileName);
    $.ajax({
        type: "POST",
        beforeSend: function(request) {
            request.setRequestHeader("X-Parse-Application-Id", '...');
            request.setRequestHeader("X-Parse-REST-API-Key", '...');
            request.setRequestHeader("Content-Type", file.type);
        },
        url: serverUrl,
        data: blob,
        processData: false,
        contentType: false,
        success:onSuccess,
        error:onError
    });
}

这工作正常,我得到了表单的 URL:

http://files.parse.com/b6a8c6d1-ba52-4d82-bde7-d2f2c9bb6fe4/6279b03f-521a-4481-97ae-553a0396ff98-xyz

现在,我尝试PFImageView在 iOS 上使用来检索/显示图像,如此所述,但发现自己无法创建一个PFFile作为文件属性传递给PFImageView此片段所需的对象:

PFImageView *creature = [[PFImageView alloc] init];
creature.image = [UIImage imageNamed:@"1.jpg"]; // placeholder image
creature.file = (PFFile*)file;
[creature loadInBackground];

当然,我可以通过直接访问存储在 PFObject 中的 URL 来下载图像,但我想知道这是否正确以及是否有更好的方法来处理这个问题。

那么,在所描述的场景中,我应该如何获取存储在 Parse 上的图像,我有用于上传它的 REST API 调用返回的 URL?

4

2 回答 2

1

查了一下界面,PFFile没找到PFFile直接下载的方法。但是,您说您将文件的 URL 设置为PFObject. 相反,为什么不将该属性设置为 a PFFile

PFObject *object = ....
PFFile *imageFile = [object objectForKey:@"imageFile"];
creature.file = file;
于 2013-06-06T16:18:30.167 回答
0

我最终在 parse.com 论坛上问了同样的问题并得到了有用的答案

管理通过 Parse REST API 上传的图像的一种受支持的方法似乎是通过另一个 REST 调用将图像与先前创建的对象相关联。这样做将允许稍后PFFile在 iOS 端使用。

于 2013-06-08T05:43:14.603 回答