标签: fs

如何在node.js中复制文件(包括修改时间)?

我可以使用以下命令复制node.js中的文件:

            var readStream = fs.createReadStream(fromFilePath);
            readStream.pipe(fs.createWriteStream(toFilePath));
Run Code Online (Sandbox Code Playgroud)

问题是如何像常规文件复制命令一样复制/保留修改时间(mtime).

copy fs node.js

8
推荐指数
1
解决办法
1741
查看次数

Node.js - 如何处理流错误事件

我正在从fs.createReadStream()返回的文件流中读取,并且我将它传递给使用zlib.createGzip()创建的gzip流,然后我将gzip流传递给HTTP响应.

我不知道如何处理这些流上的'错误'事件.我只是想确保所有流都关闭,记录错误,并且没有资源泄露(注意文件流的autoClose设置为true).

例如,如果在fs读取流上发生错误,那将如何影响gzip流,然后影响响应流?"错误"事件会自动传播还是只是未处理并使我的应用程序崩溃?我应该在每个流上或仅在链中的最后一个流上监听"错误"事件吗?如果我在fs流上听'错误'会发生什么 - gzip流是否仍会检测到发生了错误?

gzip stream fs node.js

8
推荐指数
1
解决办法
2915
查看次数

使用node-request和fs Promisified下载图像,Node.js中没有管道

我一直在努力成功下载图像而不用它将它传递给fs.这就是我所取得的成就:

var Promise = require('bluebird'),
    fs = Promise.promisifyAll(require('fs')),
    requestAsync = Promise.promisify(require('request'));

function downloadImage(uri, filename){
    return requestAsync(uri)
        .spread(function (response, body) {
            if (response.statusCode != 200) return Promise.resolve();
            return fs.writeFileAsync(filename, body);
        })
       .then(function () { ... })

       // ...
}
Run Code Online (Sandbox Code Playgroud)

有效输入可能是:

downloadImage('http://goo.gl/5FiLfb', 'c:\\thanks.jpg');
Run Code Online (Sandbox Code Playgroud)

我确实认为问题在于处理问题body.我已经尝试将其转换为Buffer(new Buffer(body, 'binary')等)几种编码,但都失败了.

感谢前方的任何帮助!

fs node.js promise bluebird node-request

8
推荐指数
1
解决办法
6064
查看次数

如何使用nodejs创建一个带缓冲区的读取流

我有这个json:

var myJSON = '{"kind": "person", "fullName": "Rivka3"}';
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用createReadStream将它上传到bigquery.当我保存它localy我成功:

fs.writeFile("/tmp/bq_json_file_new.json", myJSON, function(err){});
fs.createReadStream("/tmp/bq_json_file_new.json")
  .pipe(table.createWriteStream(metadata))
  .on('complete', function(job) {
    job
      .on('error', console.log)
      .on('complete', function(metadata) {
        console.log('job completed', metadata);
      });
  });
Run Code Online (Sandbox Code Playgroud)

现在我试图这样做而不保存它localy - 使用缓冲区:

fs.createReadStream(new Buffer(myJSON, "utf8"))
  .pipe(table.createWriteStream(metadata))
  .on('complete', function(job) {
    job
      .on('error', console.log)
      .on('complete', function(metadata) {
        console.log('job completed', metadata);
      });
  });
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

fs.js:575
  binding.open(pathModule._makeLong(path),

TypeError: path must be a string
Run Code Online (Sandbox Code Playgroud)

fs node.js google-bigquery

8
推荐指数
1
解决办法
1万
查看次数

什么是`fs.js`中的`process.binding('fs')`?

我看到顶部fs.js有一个process.binding('fs').

https://github.com/nodejs/node/blob/master/lib/fs.js#L10:

const binding = process.binding('fs');
Run Code Online (Sandbox Code Playgroud)

然后,它被用作:

binding.open(pathModule._makeLong(path),
           stringToFlags(flag),
           0o666,
           req);
Run Code Online (Sandbox Code Playgroud)

(在https://github.com/nodejs/node/blob/master/lib/fs.js#L303-L306)

我的问题是:

  • 什么process.binding('fs')意思?
  • 什么在fs这里(我们已经在fs.js)?
  • 我在哪里可以找到源代码binding.open?是Javascript代码还是c/c ++代码?

javascript fs node.js

8
推荐指数
1
解决办法
2365
查看次数

节点fs复制文件夹

我正在尝试使用Node fs模块复制文件夹.我熟悉readFileSync()writeFileSync()方法,但我想知道我应该用什么方法来复制指定的文件夹?

fs node.js

8
推荐指数
3
解决办法
1万
查看次数

如何用fs.unlink删除本地文件?

码:

fs.unlink("/public/images/uploads/"+req.file.filename, (err) => {
        if (err) {
            console.log("failed to delete local image:"+err);
        } else {
            console.log('successfully deleted local image');                                
        }
});
Run Code Online (Sandbox Code Playgroud)

控制台/终端的错误消息:

failed to delete local image:Error: ENOENT: no such file or directory, unlink '/public/images/uploads/ed6d810405e42d0dfd03d7668e356db3'
Run Code Online (Sandbox Code Playgroud)

情况

我必须指定错误的路径.我不明白为什么会出错," public"文件夹与" "文件处于同一级别app.js." upload.js"位于名为" routes" 的文件夹中,与" app.js" 处于同一级别.

我已经在我的app.js中为我的公共文件夹指定了一个"/ public"路由:

//Static Folder
app.use("/public",express.static(path.join(__dirname, "/public")));
Run Code Online (Sandbox Code Playgroud)

题:

我做错了什么?

javascript fs node.js

8
推荐指数
1
解决办法
2万
查看次数

将MediaRecorder Blob发送到服务器并在后端构建文件

我正在使用nodejs和SailsJs的网站上工作。

我的目标是将MediaRecorder.ondataavailable事件生成的Blob(返回小Blob)发送到服务器,并在完成记录后在服务器上构建完整的文件以进行存储。

在浏览器上,如果我将所有这些小斑点推入数组中,然后执行以下操作:

var blob = new Blob(recordedBlobs, {type: 'video/mp4'});
Run Code Online (Sandbox Code Playgroud)

我得到了完整的文件blob,可以轻松将其上传到服务器,并且可以完全播放。

我正在使用ajax将所有这些小blob发送到服务器,在服务器端,我已经将其保存在本地:

req.file('recordingPart').upload(async function...)
Run Code Online (Sandbox Code Playgroud)

它将在我的tmp文件夹中创建一个文件,以存储该文件,直到我要组装最终文件为止(我还将发送每个零件的索引以了解稍后组装的确切顺序)。

用户结束录制后,我会从前端发出另一个请求,让我知道何时开始组装文件。

因此,我使用fs.readFile将tmp文件的内容放入一个数组中(根据我拥有的索引维护顺序),如下所示:

    const body = [];
    for (let i = 0; i < recParts.length; i++){
      body[recParts[i].part.index - 1] = await readFile(recParts[i].part.tmpPath, null);
    }
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令创建文件:

const videoBuffer = Buffer.from(body);
    fs.writeFile(__dirname + '/../../.tmp/recording.mp4', videoBuffer, function(err) {
      if (err) console.log(err);
      console.log('File created');
    });
Run Code Online (Sandbox Code Playgroud)

文件已创建,但无法播放!

我添加了console.log(body),我得到了:

BODY [ <Buffer 1a>,
  <Buffer 45 df a3 a3 42 86 81 01 42 f7 81 01 42 f2 81 04 42 f3 …
Run Code Online (Sandbox Code Playgroud)

javascript fs node.js mediarecorder sails.js

8
推荐指数
2
解决办法
703
查看次数

Angular 7如何使用fs模块?

我正在使用Angular 7。

我试图在Typescript上使用fs模块打开目录。我总是遇到以下错误:“未找到模块:错误:无法解析fs”类型@节点和文件系统已安装。

我的代码:

import {Component, OnInit} from '@angular/core';
import * as fs from 'file-system';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit  {
  title = 'my-app';

  constructor() {

  }

  ngOnInit() {
    console.log(fs);
  }
}
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗 ?

节点:v10.14.0 Npm:v6.4.1 Angular CLI:v7.1.1

fs typescript angular angular7

8
推荐指数
1
解决办法
9623
查看次数

为什么我们在 webpack 中设置 node.fs: 'empty' ?

我看到此错误“找不到模块:错误:无法解析......中的'fs'”,解决方案是

// webpack 4
node: {
    fs: "empty"
}


//webpack5
   resolve: {
    extensions: [".ts", ".tsx", ".js", ".css"],
    fallback: {
      fs: false,
    },
  },
Run Code Online (Sandbox Code Playgroud)

但是我不知道“fs:false”或“空”是什么意思?

javascript fs node.js webpack

7
推荐指数
1
解决办法
4004
查看次数