Nodejs 能否读取网络共享的文件?(已解决)
Nodejs 能否读取网络共享的文件?(已解决)
RT: 如果可以,给个例子看看~先谢过
加1
还没搞定,继续顶
什么网络共享?能具体说说吗?
[@frosh](/user/frosh) 就是局域网共享其中一台电脑共享的文件夹 比如说 某一台电脑的ip是 192.168.7.132 共享的test/1.jpg 那我就是想 获取到\192.168.7.132\test\1.jpg
用express写个静态资源服务器呗
[@jintaolee](/user/jintaolee) app.use(express.static(‘file:\192.168.7.132’)); 和app.use(express.static(‘http:\192.168.7.132’)); 都读不到,能给个例子么?
var staticfile=[‘public’,‘up’]; for( var i=0;i<staticfile.length;i++){ app.use(express.static(path.join(__dirname, staticfile[i]))); } 我把静态文件存储路径放在public和up两个文件下 ,我在public下有个图片1.png,那么我启动express后本机127.0.0.1:3000/1.png就能读到图片, 我本机ip172.0.2.38,那么我换台机子只要访问172.0.2.38:3000/1.png就能访问到,但是必须把3000端口对外,或者直接关闭防火墙吧
[@jintaolee](/user/jintaolee) 额,我懂你的意思了,原来你讲的是 在目标电脑上搭载一个图片服务器,但是我这里目前还不能确定有这样的条件去 搭载一个服务器。领导就说只是局域网中一台电脑共享文件而已。大家都去读取这个问题,读(上传)完以后就删除掉这个文件。 现在的问题就是Node服务端如何去获取到共享文件夹 然后做删除操作。
[@hc2014](/user/hc2014) 我去,windows不就支持把这个文件设置成共享文件吗
[@jintaolee](/user/jintaolee) 人为各种操作当然没问题,但是程序读不到啊
[@hc2014](/user/hc2014) 你这个文件到底是上传目录还是下载目录啊,我明确告诉你 nodejs是可以操作文件的 也就是你说的对文件删除是可以的
[@jintaolee](/user/jintaolee) 我知道node是可以操作文件的,但是之前都是在同一台电脑上的,你试过去删除局域网上共享文件夹里面的文件么? 我现在就是想做这种事。 再来简单的说说我的需求, 192.168.7.132这个电脑上共享了一个文件夹叫test, 然后我去访问这个共享文件夹 把里面的某个文件,例如 叫a.jpg 上传到服务器,这一步已经做到了。 然后我接下来想做的就是想删除这个a.jpg
[@jintaolee](/user/jintaolee) 不知道是我描述的有问题,还是你把问题想的太简单了。图片上传以后获取到的图片路径不是原始路径 打个比方来说, 192.168.7.132/test/a.jpg 这个图片上传以后 获取到的图片路径是/public/upload/a.jpg。这个上传的操作 用到了一个connect-multiparty 的模块来完成的。引用这个模块的原因是修改系统默认的上传路径,不然win7系统会报没有权限的错误 而在ubuntu系统上也会报req.files为undefined的错)。我猜想这个模块的底层赢有解决我问题的方案,但是呢?它嵌套太多,我都没找到核心代码在哪,就算找了我也看不懂!
smb协议 有专门的 模块 .去试试吧.
可以直接使用download,npm install download
[@chrome1008](/user/chrome1008) 搞定~用的是smb2这个模块
[@hc2014](/user/hc2014) 有个同样的需求,能说一下nodejs怎么用smb2吗?
Node.js 能否读取网络共享的文件?(已解决)
是的,Node.js 可以读取网络共享的文件,但需要通过一些额外的步骤来实现。通常情况下,你需要将网络共享的文件系统挂载到本地文件系统的一个目录上,然后通过 Node.js 读取该目录下的文件。
假设你的网络共享已经被挂载到本地的 /mnt/network_share
目录下,你可以使用 fs
模块来读取文件。
示例代码
const fs = require('fs');
const path = require('path');
// 网络共享文件路径
const networkShareFilePath = '/mnt/network_share/example.txt';
// 读取文件内容
fs.readFile(path.resolve(networkShareFilePath), 'utf-8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log('File content:', data);
});
解释
- 引入模块:首先引入 Node.js 的
fs
和path
模块。 - 指定文件路径:定义一个变量
networkShareFilePath
来存储网络共享文件的路径。在这个例子中,我们假设文件已经挂载到了本地的/mnt/network_share
目录下。 - 读取文件:使用
fs.readFile
方法来异步读取文件内容。该方法接受三个参数:- 文件路径。
- 读取文件时使用的字符编码(这里使用
'utf-8'
)。 - 一个回调函数,当文件读取完成或发生错误时调用。如果发生错误,
err
参数将包含错误对象;否则,data
参数将包含文件内容。
以上代码展示了如何从网络共享读取文件内容。确保你的网络共享已经正确挂载,并且 Node.js 进程有足够的权限访问该文件。