当客户端发布块数据(文件的一部分)时,服务器端应将块插入文件。但是 fs.open 会截断文件。所以我不能用空fd来写。现在这就是我正在使用的它读取所有缓冲区并更改缓冲区中的块范围值。
//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);
});
});
});
});
有没有更好的方法来做到这一点?请告诉我,非常感谢。