首页 文章

使用OneDrive Rest Api上传jpg时出现问题

提问于
浏览
0

对于这个HTML5手机应用程序,我必须使用OneDrive REST API .

我设法上传文件,但服务器上的文件不是.jpg格式,不会显示在jpg查看器中 . 通过REST API登录并获取令牌后,我使用XMLHttpRequest来输出文件 . 我已经尝试将其作为ArrayBuffer和base64编码的字符串传递 . 在每种情况下,文件都在那里,但没有正确解码 . 我想我需要告诉网络服务器如何使用“request.setRequestHeader('Content-Type','image / jpg')”解码文件,但我从OneDrive服务器收到以下错误消息:

“error”:{“code”:“request_body_invalid_media_type”,“message”:“不支持Content-Type Headers '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);
    }
}

1 回答

  • 1

    尝试

    request.setRequestHeader('Content-Type', '');
    

相关问题