解析从url获取图像文件数据并将其另存为解析文件

时间:2017-02-25 21:14:41

标签: javascript ajax parse-platform parse-server

我正在尝试使用Ajax获取图像文件,然后将其另存为Parse文件。我是这个过程的新手,这是我到目前为止所做的:

$.ajax({
        type: "GET",
        url: url,
        headers:{'Content-Type':'image/jpeg','X-Requested-With':'XMLHttpRequest'},
        processData: false,
        success: function (data) {

            var name = "photo.jpg";
            var img = btoa(encodeURIComponent(data));

            var parseFile = new Parse.File(name, { base64: img });

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

                console.log('Saved parse file: ' + parseFile.url());

            }, function (error) {

                console.log("error: " + error.message);
            });
        },
        error: function (xhr, ajaxOptions, thrownError) {

            console.log('error on uploadPhoto: ' + xhr + ' ' + ajaxOptions + ' ' + thrownError);
        }
    });

文件似乎已保存,但我得到的只是一个空文件。 Parse Docs说我们可以使用base64编码的String或字节值数组。

我做错了什么,有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我决定使用XMLHttpRequest使用不同的方法。这是代码:

var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {

        if (this.readyState == 4 && this.status == 200) {

            var reader = new window.FileReader();

            reader.readAsDataURL(this.response);

            reader.onloadend = function () {

                var name = "photo.jpg";

                var base64data = reader.result;

                var parseFile = new Parse.File(name, {base64: base64data});

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

                    console.log('Saved parse file: ' + parseFile.url());

                }, function (error) {

                    console.log("error: " + error.message);
                });
            }
        }
    };

    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.send();

现在文件正在作为解析文件正确保存。