如何使用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
相关产品推荐
相关产品推荐

