4

Angular js アプリから parse.com の js API を使用しています。ユーザーのプロフィール写真を保存/更新しようとしています。私は次のコードを持っています:

いくつかの html . . .

<input type="file" capture="camera" accept="image/*" id="profilePhotoFileUpload">

google i/oとraymondとparse js ガイドに感謝します

私のコントローラーのコード:

$scope.updateUserProfile = function (user) {

        var fileUploadControl = $("#profilePhotoFileUpload")[0];
        if (fileUploadControl.files.length > 0) {
            var file = fileUploadControl.files[0];
            var name = "photo.jpg";

            var parseFile = new Parse.File(name, file);

            parseFile.save();


}

このエラーが発生し続けます:

TypeError: Object.Parse.File.save で undefined のメソッド 'then' を呼び出せません (parse-1.2.8.js:4084:43)

ここに画像の説明を入力

parseFile.save() を呼び出すとき

基本的に _source は undefined です。. . どうして?!

ありがとう!

4

2 に答える 2

1

私の最終的な目標は、この投稿の情報を使用して phonegap で使用することだったので、最終的に回避しました。. レイモンド・カムデンに感謝!

関数 gotPic(データ) {

window.resolveLocalFileSystemURI(data, function(entry) {

    var reader = new FileReader();

    reader.onloadend = function(evt) {
        var byteArray = new Uint8Array(evt.target.result);
        var output = new Array( byteArray.length );
        var i = 0;
        var n = output.length;
        while( i < n ) {
            output[i] = byteArray[i];
            i++;
        }                
        var parseFile = new Parse.File("mypic.jpg", output);

        parseFile.save().then(function(ob) {
                navigator.notification.alert("Got it!", null);
                console.log(JSON.stringify(ob));
            }, function(error) {
                console.log("Error");
                console.log(error);
            });

    }

    reader.onerror = function(evt) {
          console.log('read error');
          console.log(JSON.stringify(evt));
      }

    entry.file(function(s) {
        reader.readAsArrayBuffer(s);
    }, function(e) {
        console.log('ee');
    });

});

}

于 2013-07-11T13:50:20.353 に答える
1

他の誰かが Phonegap と Parse を使用している場合は、Raymond Camden の別の役立つ例を次に示します。

http://www.raymondcamden.com/2013/07/23/better-example-of-phonegap-parse-and-uploading-files

var imagedata = "";    

$("#takePicBtn").on("click", function(e) {
    e.preventDefault();
    navigator.camera.getPicture(gotPic, failHandler, 
        {quality:50, destinationType:navigator.camera.DestinationType.DATA_URL,
         sourceType:navigator.camera.PictureSourceType.PHOTOLIBRARY});
});

function gotPic(data) {
    console.log('got here');
    imagedata = data;
    $("#takePicBtn").text("Picture Taken!").button("refresh");
}

そしてそれは次のように保存されます:

var parseFile = new Parse.File("mypic.jpg", {base64:imagedata});
        console.log(parseFile);
            parseFile.save().then(function() {
                var note = new NoteOb();
                note.set("text",noteText);
                note.set("picture",parseFile);
                note.save(null, {
                    success:function(ob) {
                        $.mobile.changePage("#home");
                    }, error:function(e) {
                        console.log("Oh crap", e);
                    }
                });
                cleanUp();
            }, function(error) {
                console.log("Error");
                console.log(error);
            });

{base64:imagedata}これは、このような文字列データを使用して解析ファイルを作成するためのキーであるため、特に注意してください。

于 2015-02-17T07:21:41.903 に答える