在前端开发中,我们经常需要连接和操作远程服务器上的文件,如何在代码中连接和操作 SMB 协议的共享文件夹呢?这就需要用到 @marsaud/smb2-promise 这个 npm 包。@marsaud/smb2-promise 是一个基于 Node.js 的库,提供了一套 Promise 和流式的 API,用于访问 Windows 共享文件夹。
安装
使用 npm 安装 @marsaud/smb2-promise:
npm install @marsaud/smb2-promise
使用
在使用 @marsaud/smb2-promise 前,需要新建一个连接对象:
const SMB2 = require('@marsaud/smb2'); const smb2 = new SMB2({ share: '\\\\192.168.0.1\\share', domain: 'domain', username: 'username', password: 'password' });
其中,share
为共享文件夹的路径,domain
为域名,username
为用户名,password
为密码。
连接对象创建之后,即可使用其提供的 API 进行操作。以下是一些常用操作的示例代码:
获取共享文件夹下的文件和文件夹列表
smb2.readdir('path/to/folder') .then(files => console.log('Files:', files)) .catch(err => console.error(err));
创建文件夹
smb2.mkdir('path/to/folder/newFolder') .then(() => console.log('Folder created')) .catch(err => console.error(err));
上传文件
const fs = require('fs'); const readStream = fs.createReadStream('/path/to/localFile'); smb2.writeFile('path/to/remoteFile', readStream) .then(() => console.log('File uploaded')) .catch(err => console.error(err));
下载文件
const fs = require('fs'); const writeStream = fs.createWriteStream('/path/to/localFile'); smb2.readFile('path/to/remoteFile', writeStream) .then(() => console.log('File downloaded')) .catch(err => console.error(err));
注意事项
- 需要在 Windows 中开启 SMB 共享,并授权相应的用户权限。
- 如果共享文件夹路径包含空格,需要使用双引号
"
括起来。 - 每个连接对象只能连接到一个共享文件夹,如果需要连接多个,需要创建多个连接对象。
总结
通过本文的介绍,我们了解了如何使用 @marsaud/smb2-promise 连接和操作 Windows 共享文件夹。在实际应用中,需要结合具体的业务需求进行操作,并根据实际情况进行错误处理和异常处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bcb967216659e244670