You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js通过PocketBase JavaScript SDK上传本地PDF文件

在Node.js中用PocketBase SDK上传本地PDF文件

Node.js里没有浏览器的File对象,但PocketBase的JS SDK支持传入自定义的文件对象(只要包含name、type和data属性)来完成上传。下面是你要的loadFile实现和完整代码:

依赖准备

先确保装了所需包:

npm install pocketbase

原生fs模块就够用,无需额外安装。

实现loadFile函数

方式1:用Buffer(适合小文件)

const fs = require('fs').promises;
const path = require('path');

async function loadFile(filePath) {
  const buffer = await fs.readFile(filePath);
  return {
    name: path.basename(filePath), // 获取文件名
    type: 'application/pdf',       // PDF的MIME类型
    data: buffer                   // 文件内容Buffer
  };
}

方式2:用可读流(适合大文件,节省内存)

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

function loadFile(filePath) {
  return {
    name: path.basename(filePath),
    type: 'application/pdf',
    data: fs.createReadStream(filePath) // 直接返回文件流
  };
}

完整上传代码

const PocketBase = require('pocketbase');

// 初始化PocketBase实例
const pb = new PocketBase('http://你的PocketBase地址');

async function uploadPdf(filePath, entryName) {
  try {
    const fileObject = await loadFile(filePath); // 流版本不需要await
    const entry = {
      nameField: entryName,
      fileField: fileObject
    };
    const result = await pb.collection('my-collection').create(entry);
    console.log('上传成功:', result.id);
  } catch (err) {
    console.error('上传失败:', err.message);
  }
}

// 调用示例
uploadPdf('./test.pdf', '我的第一个PDF');

注意事项

  • 确保type字段是正确的MIME类型,PDF固定为application/pdf。
  • 批量上传时建议限制并发数,比如用p-limit包控制,避免请求过多导致服务器报错。
  • 如果你的PocketBase实例需要认证,记得先调用pb.admins.authWithPassword或者pb.users.authWithPassword登录。

内容的提问来源于stack exchange,提问作者Felix B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:40:52