【问题标题】:Send file to OneDrive API using Javascript使用 Javascript 将文件发送到 OneDrive API
【发布时间】:2016-06-27 21:39:04
【问题描述】:

我在将文件上传到“OneDrive Api”时遇到了一些问题。

我得到了上传de文件的URL:

 $.ajax({
                    type: "POST",
                    url: folderUrl,
                    headers: {
                        'Authorization': 'Bearer ' + access_token,
                        'Content-Type': 'application/json',
                    },
                    success: {.....}
});

有了它,我得到了“上传网址”。然后我读取并上传用户选择的文件(我需要对文件进行分段):

var fileInput = $("#file");
var fileList = fileInput[0].files;
var file = fileList[0];
content_length = file.size;
inicio = 0;
var blob = file.slice(inicio, content_length);

fileReader.onloadend = function (evt) {
    if (evt.target.readyState == FileReader.DONE) { // DONE == 2
        var result = evt.target.result;

        $.ajax({
            method: "PUT",
            url: uploadUrl,
            headers: {
                'Authorization': 'Bearer ' + access_token,
                'Content-Range': "bytes " + inicio + "-" + ((inicio + evt.target.result.length)-1) + "/" + content_length,
            },
            data: result,
            success: function (result) {
                console.log("subió");
            },
            error: function (error) {
                console.log("falló");
                console.log(JSON.stringify(error, null));
            }
        })
        .done(function (msg) {
            alert("Data Saved: " + msg);
        });
    }
};

fileReader.readAsBinaryString(blob);

当我上传包含类似内容的文本文件时

“Lorem ipsum dolor sit amet”(不含特殊字符 'ñ'、'á'、 等等……)

它工作。

但是,当上传带有特殊字符(“ñ”、“á”、“¿”....)的文件时会显示错误:

"code":"invalidRequest","message":"**Declared fragment length does not match the provided number of bytes**"

还有“.doc”、“.zip”等文件。

[编辑]:我注意到“á”的“á”变化(例如)。

我需要帮助:/

谢谢

【问题讨论】:

    标签: javascript file-upload onedrive


    【解决方案1】:

    这听起来像是一个编码问题,我猜罪魁祸首是readAsBinaryString。尝试切换到readAsArrayBuffer 看看是否有帮助。

    This answer goes into a lot more details.

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多