我可以使用以下命令复制node.js中的文件:
var readStream = fs.createReadStream(fromFilePath);
readStream.pipe(fs.createWriteStream(toFilePath));
Run Code Online (Sandbox Code Playgroud)
问题是如何像常规文件复制命令一样复制/保留修改时间(mtime).
我正在从fs.createReadStream()返回的文件流中读取,并且我将它传递给使用zlib.createGzip()创建的gzip流,然后我将gzip流传递给HTTP响应.
我不知道如何处理这些流上的'错误'事件.我只是想确保所有流都关闭,记录错误,并且没有资源泄露(注意文件流的autoClose设置为true).
例如,如果在fs读取流上发生错误,那将如何影响gzip流,然后影响响应流?"错误"事件会自动传播还是只是未处理并使我的应用程序崩溃?我应该在每个流上或仅在链中的最后一个流上监听"错误"事件吗?如果我在fs流上听'错误'会发生什么 - gzip流是否仍会检测到发生了错误?
我一直在努力成功下载图像而不用它将它传递给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')等)几种编码,但都失败了.
感谢前方的任何帮助!
我有这个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.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 ++代码?我正在尝试使用Node fs模块复制文件夹.我熟悉readFileSync()和writeFileSync()方法,但我想知道我应该用什么方法来复制指定的文件夹?
码:
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)
题:
我做错了什么?
我正在使用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) 我正在使用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'”,解决方案是
// webpack 4
node: {
fs: "empty"
}
//webpack5
resolve: {
extensions: [".ts", ".tsx", ".js", ".css"],
fallback: {
fs: false,
},
},
Run Code Online (Sandbox Code Playgroud)
但是我不知道“fs:false”或“空”是什么意思?
fs ×10
node.js ×9
javascript ×4
angular ×1
angular7 ×1
bluebird ×1
copy ×1
gzip ×1
node-request ×1
promise ×1
sails.js ×1
stream ×1
typescript ×1
webpack ×1