我正在尝试使用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或字节值数组。
我做错了什么,有更好的方法吗?
答案 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();
现在文件正在作为解析文件正确保存。