Parse.com JavaScript SDK从url上传文件

时间:2016-02-04 11:24:44

标签: javascript url parse-platform upload media

我正在尝试使用JavaScript SDK将用户个人资料图片上传到parse.com,而我却陷入了引用媒体文件的困境。我发现的所有教程和文档都指向“上传本地文件”,但我试图从网址上传文件。

$('#parse').on('click', function () {

    Parse.initialize(xxx, yyy);

    var user = new Parse.User();
    user.set("username", photos.owner_name);
    user.set("password", "12349876");
    user.set("email", photos.owner_id + "@blabla.com");

// other fields can be set just like with Parse.Object
    user.set("phone", "000-000-0000");
    user.set("nameLowerCase", photos.owner_name.toLowerCase());
    user.set("name", photos.owner_name);


    var url = '/images/tpp.png';
    user.set("profileThumbnail", url);


    user.signUp(null, {
        success: function (user) {
            console.log(user);

        },
        error: function (user, error) {

            alert("Error: " + error.code + " " + error.message);
        }
    });

});

该文档向您展示了如何将文件上传到Parse云并使用它的url;因为我已经上传了文件,所以我不需要上传到Parse云。

我知道,“url”变量是一个字符串,我迷路了。我提前感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

Parse不接受云外的任何文件来保存对象。因此,我们需要首先上传文件以解析云。

要上传文件以解析云,我们使用以下代码:

var parseFile = new Parse.File(filename, file);
parseFile.save().then(function (parseFile) {
    url = parseFile.name();
    classname.set({objectname: {"name": url, "__type": "File"}});
});

当我们上传本地文件时,此代码非常有用;但是当我们想要从url上传文件时,首先我们需要将文件编码为base64。

下面是我的问题的完整解决方案:

$('#parse').on('click', function () {

    Parse.initialize(xxx, yyy);

    var user = new Parse.User();
    user.set("username", photos.owner_name);
    user.set("password", "12349876");
    user.set("email", photos.owner_id + "@timeset.com");

// other fields can be set just like with Parse.Object
    user.set("phone", "000-000-0000");
    user.set("nameLowerCase", photos.owner_name.toLowerCase());
    user.set("name", photos.owner_name);

//base64 encoder with File Reader
    function base64encode(url, callback) {
        var xhr = new XMLHttpRequest();
        xhr.responseType = 'blob';
        xhr.onload = function () {
            var reader = new FileReader();
            reader.onloadend = function () {
                callback(reader.result);
            };
            reader.readAsDataURL(xhr.response);
        };
        xhr.open('GET', url);
        xhr.send();
    }

    base64encoder('/images/tpp.png', function (base64Img) {
        imge = base64Img;
        simge = imge.split(',');
        simge = simge[1];
        parseFile = new Parse.File("profilePicture.png", {"base64": simge});
    });

    parseFile.save().then(function (parseFile) {

        url1 = parseFile.name();

        user.set({profileThumbnail: {"name": url1, "__type": "File"}});

        user.signUp(null, {
            success: function (user) {
                console.log(user);
                // Hooray! Let them use the app now.
            },
            error: function (user, error) {
                // Show the error message somewhere and let the user try again.
                alert("Error: " + error.code + " " + error.message);
            }
        });


    });

});