【问题标题】:How to convert a file to binary stream in Javascript?如何在Javascript中将文件转换为二进制流?
【发布时间】:2022-02-10 21:11:03
【问题描述】:

我正在使用 Next.js 开发网站并尝试使用 Microsoft Graph REST API 将文件上传到 OneDrive。

文档说请求体应该是要上传文件的二进制流,但是不知道怎么转成二进制流。

我正在使用 HTML 输入元素将文件数据保存到 file:

{name: '200311 Weekly Safety Meeting - Coronavirus (2019-nCoV).pdf', lastModified: 1644421523745, lastModifiedDate: Wed Feb 09 2022 07:45:23 GMT-0800 (Pacific Standard Time), webkitRelativePath: '', size: 700913, …}

我在客户端的代码,

const uploadFile = async () => {
    const res = await axios.put('/api/onedrive/file', {
        accessToken: token,
        filename: file.name,
        content: file,
        parentId: '01XA3PFKG7YWH2K7QVIZCYRP33XLQEHLZG',
    });
    console.log(res.data);
};

在服务器端,

const upload = async (req, res) => {
const { filename, accessToken, content, parentId } = req.body;
const url = `https://graph.microsoft.com/v1.0/users/69e5bc0d-ef63-4040-88cf-0ada867b7afa/drive/items/${parentId}:/${filename}:/content`;

try {
    const result = await axios({
        method: 'put',
        url: url,
        body: content,
        headers: {
            Authorization: `Bearer ${accessToken}`,
        },
    });
    res.status(200).send(result.data);
} catch (err) {
    console.log(err);
    res.status(500).send(err);
}};

【问题讨论】:

    标签: javascript reactjs next.js microsoft-graph-api


    【解决方案1】:

    感谢您与我们联系

    请尝试以下代码将文件转换为二进制格式,看看是否有效

    代码:

    function GetBinaryDataFromFile(strFileName)
    {
     var fso = new ActiveXObject("ADODB.Stream");
        fso.Type = 1
        fso.Open
        fso.LoadFromFile strFileName
    }  
    

    【讨论】:

    • 我收到了ReferenceError: ActiveXObject is not defined。我认为ActiveXObject只能在IE浏览器上使用。
    • 是的,我认为 ActiveXObject 只是 IE 的一部分,并且只能与它一起使用。出于安全原因,它不支持其他浏览器。
    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2015-11-07
    • 2017-06-28
    • 2014-02-16
    相关资源
    最近更新 更多