我一直试图将图像上传到我的Ionic 2应用程序中的node.js休息服务(使用multer实现)。
我正在调用下面的上传pic方法,传递图像本地文件路径以及我传递给节点服务的附加参数。
我能够在chrome dev工具中看到文件数据,但onreadystatechange似乎永远不会被触发。
我正在使用离子2 beta 2.0.0.17。任何帮助非常感谢。
uploadPic(personid,imageData) {
var fileStream = null;
var self = this.resource;
return new Promise((resolve, reject) => {
window.resolveLocalFileSystemURL(imageData,
(fileDetail) => {
fileDetail.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
}
fileStream = reader.result;
var formdata=new FormData();
formdata.append("upload", fileStream, "help.png");
formdata.append('filename', personid + '.png');
formdata.append('personId', personid);
let xhr:XMLHttpRequest = new XMLHttpRequest();
xhr.open('POST', self.api_url + self.method_persons + '/photo', true);
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(JSON.parse(xhr.response));
} else {
reject(xhr.response);
}
}
};
xhr.setRequestHeader('hpApp-Token', self.entity_token);
xhr.setRequestHeader('Authorization','Bearer '+ self.usr_token);
xhr.send(formdata);
});
},
(err)=> {
console.log("read error",err)
});
});