Nodejs 用form的multipart方式上传文件

发布于 1周前 作者 yuanlaile 来自 nodejs/Nestjs

Nodejs 用form的multipart方式上传文件

自己最近需要弄的东西涉及到将文件上传到box网盘上面,而那边开发的api需要采用https用form的multipart/data的方式将文件上传上去,而自己上网找却没有找到比较好用的代码,最后不得自己看了看post上传数据的具体格式。。。

具体的内容可以看下面的两篇文章。。。 post上传数据格式分析 node.js模拟post上传文件

考虑到现在没有比较好用的模块,所以自己写了一个模块,可以供大家在以后需呀实现类似功能的时候使用。。。 代码


2 回复

Node.js 用form的multipart方式上传文件

最近我需要处理一个任务,即将文件上传到Box网盘。Box网盘的API要求使用HTTPS并通过multipart/form-data的形式上传文件。然而,在网上查找时,我没有找到特别好用的库或代码示例。于是,我决定自己动手,研究了HTTP POST请求的具体格式。

具体内容参考以下两篇文章:

考虑到目前还没有特别好用的库,我编写了一个简单的模块,可以方便大家在需要实现类似功能时使用。

示例代码

首先,我们需要安装一些必要的依赖库,如requestfs

npm install request

然后,我们可以编写一个简单的Node.js脚本来实现文件上传:

const fs = require('fs');
const request = require('request');

// 文件路径
const filePath = './example.txt';

// Box API URL
const boxApiUrl = 'https://upload.box.com/api/2.0/files/content';

// 设置请求参数
const formData = {
    attributes: JSON.stringify({
        name: 'example.txt',
        parent: { id: '0' }
    }),
    file: fs.createReadStream(filePath)
};

request.post({ url: boxApiUrl, formData: formData }, (err, httpResponse, body) => {
    if (err) {
        console.error('Upload failed:', err);
        return;
    }

    console.log('Upload successful! Server responded with:', body);
});

代码解析

  1. 引入依赖:

    • fs:用于读取本地文件。
    • request:用于发送HTTP请求。
  2. 设置文件路径:

    • filePath:指定要上传的文件路径。
  3. 定义Box API URL:

    • boxApiUrl:Box网盘的文件上传API地址。
  4. 创建formData对象:

    • attributes:包含文件元数据(例如文件名和父目录ID)。
    • file:通过fs.createReadStream()创建的文件流,用于上传文件。
  5. 发送POST请求:

    • 使用request.post()方法发送带有formData的数据到Box API。
    • 回调函数中处理响应结果。

通过这种方式,我们可以轻松地使用Node.js通过multipart/form-data格式上传文件到Box网盘。希望这个示例对你有所帮助!


在Node.js中使用multipart/form-data格式上传文件到Box网盘,可以通过一些流行的库来简化这一过程。例如,multer是一个非常实用的库,用于处理multipart/form-data,特别是文件上传。然而,直接上传到Box网盘可能需要更具体的配置。

下面是一个简单的示例,展示如何使用form-data库来发送文件到Box网盘API。这个示例不依赖于任何特定的服务器框架(如Express),而是专注于文件上传部分。

首先,你需要安装必要的库:

npm install form-data request

然后,你可以编写以下代码来上传文件:

const fs = require('fs');
const FormData = require('form-data');
const request = require('request');

function uploadFileToBox(filePath, accessToken) {
    const form = new FormData();
    form.append('file', fs.createReadStream(filePath));

    request.post({
        url: 'https://upload.box.com/api/2.0/files/content',
        headers: form.getHeaders({Authorization: `Bearer ${accessToken}`}),
        body: form
    }, (err, httpResponse, body) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(body); // 打印响应体
    });
}

// 使用你的Box访问令牌和文件路径调用函数
uploadFileToBox('/path/to/your/file.txt', 'your-box-access-token-here');

这段代码创建了一个FormData对象,用于构建包含文件的数据包。然后,它使用request库发送POST请求到Box的API端点,附带适当的认证信息。

请注意,你需要替换'/path/to/your/file.txt'为你的文件路径,并且提供正确的Box访问令牌。此外,Box API的具体端点和参数可能会随时间变化,请检查最新的Box API文档以获取最新信息。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!