对于这个HTML5手机应用程序,我必须使用OneDrive REST API。
我设法上传了该文件,但服务器上的文件不是.jpg格式,也不会显示在jpg查看器中。通过REST API登录并获取令牌后,我使用XMLHttpRequest来输出文件。我已经尝试将其作为ArrayBuffer和base64编码的字符串传递。在每种情况下,文件都在那里,但没有正确解码。我想我需要告诉网络服务器如何使用“request.setRequestHeader('Content-Type','image / jpg')”来解码文件,但是我从OneDrive服务器收到以下错误消息:
“错误”:{ “code”:“request_body_invalid_media_type”, “message”:“不支持Content-Type标题'text / plain'。” }
this.uploadFile = function (token, fileUri,fileName, fileTools, success, fail) {
var me = app.log('||Microsoft.uploadFile||');
fileTools.readFileContent(fileUri, 'dataUrl', gotData, fileError);
function fileError(err) {
app.logError(me + '::fileError:::' + err);
}
function gotData(base64String) {
var request = new XMLHttpRequest;
app.log(me + '::token::' + token);
request.open("PUT", "https://apis.live.net/v5.0/me/skydrive/files/" + fileName + "?access_token=" + token, true);
request.setRequestHeader('Content-Type', 'text/plain');
//request.setRequestHeader('Content-Type', 'image/jpg');
//request.setRequestHeader('Content-Transfer-Encoding', 'base64;charset=utf-8');
request.onload = function (e) {
app.log(request.responseText);
success(e);
};
request.onerror = function (e) {
app.log(me + '::7::');
fail(e.error.message);
};
app.log(me + '::8::' + base64String.substr(0,100));
var b = new Base64Stuff();
var aBuffer = b.base64ToBuffer(b.removeBase64jpgHeader(base64String));
request.send(aBuffer);
//request.send(base64String);
}
}
答案 0 :(得分:1)
试
request.setRequestHeader('Content-Type', '');