node.js - 如何将 block 数据写入文件

标签 node.js filestream

当客户端发布 block 数据(文件的一部分)时,服务器端应将 block 插入到文件中。 但是 fs.open 会截断文件。所以我不能用空的fd来写。 现在这就是我正在使用的,它读取所有缓冲区并更改缓冲区中的 block 范围值。

    //badly code
fs.open(getFilePath(fileId),"r+",function(err,fd){
    var bytes = new Buffer(metadata.fileSize);
    fs.read(fd,bytes,0,bytes.length,0,function(){
        for(var i=0;i<bytes.length;i++){
            if(i>=start && i <= end){
                bytes[i] = buffer[i-start];
            }
        }
        //console.log(bytes);
        fs.write(fd,bytes,0,bytes.length,0,function(err){
            if(err) throw err;

            fs.close(fd,function(){
                metadata.addChunk(start,end);
                metadata.save(callback);
            });
        });
    });
});

有更好的方法吗?请告诉我,非常感谢。

最佳答案

我知道这个问题可能有点过时了,但我在尝试将源代码写入文件时遇到了同样的问题 为了解决这个问题,我没有使用写文件而是追加,例如:

  res.on('data', function (chunk) {
      fs.appendFile('body.txt', chunk, function (err) {
          if(err) throw err;
      });   

这对我来说效果很好

关于node.js - 如何将 block 数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151728/

相关文章:

javascript - Express/Node中3个相关类别的RESTful路由结构

javascript - 如何在一个地方获得所有 api 响应 (33) 而不会弄得一团糟

javascript - Node.js、Express、EJS - 导航中当前页面上的事件类

javascript - Node memwatch : leak of type native

c# - 搜索 FileStream 然后使用 StreamReader 从那里读取

c# - 处理大型下载站点的最佳方式?

apache-flex - 如何使用 flash.filesystem.FileStream

c# - 在 C# 中从磁盘读取短数组的最佳方法?

node.js - 如何编写可由 NodeJS 和 Aurelia 使用的 ES6 类\模块

c# - 附加文本不起作用