2

ユーザーが Web インターフェイスを介して Parse に画像を保存するためのアプリケーションを開発しています。これらの画像は、ネイティブの iOS アプリで表示できます。

画像は Parse REST API を介して Parse にアップロードされます。次に、保存された画像の URL が の文字列プロパティとして保存されます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 でイメージを取得/表示するために使用しようとしましたが、このスニペットで必要なファイル プロパティとしてオブジェクトに渡すを作成できないことがわかりました。PFFilePFImageView

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

もちろん、PFObject に保存した URL に直接アクセスして画像をダウンロードすることもできますが、これが正しいかどうか、これを処理するためのより良い方法があるかどうか疑問に思っています。

では、説明されているシナリオでは、アップロードに使用された REST API 呼び出しによって返された URL を持つ Parse に保存された画像を取得するにはどうすればよいでしょうか?

4

2 に答える 2

1

のインターフェースを調べましたが、 を直接PFFileダウンロードする方法が見つかりませんでした。PFFileただし、ファイルの URL を の文字列プロパティとして設定したとおっしゃいましたPFObject。代わりに、そのプロパティを として設定してみませんPFFileか?

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