Javascript/Node JS,下载文件时如何检查文件大小并下载文件的第一千字节



Javascript/Node JS,下载文件时如何检查文件大小并下载文件的第一千字节。 检查文件大小并下载文件的第一个KB,因为我想对其进行哈希处理,然后用下放文件的哈希省略第一个kb的哈希。 大小相同(如果大小和哈希相同,则拒绝下载。

我的代码将文件下载到服务器

var download = function (url, dest, callback) {
request.get(url)
.on('error', function (err) { console.log(err) })
.pipe(fs.createWriteStream(dest))
.on('close', callback);
};
final_list.forEach(function (str) {
var filename = str.split('/').pop();
console.log('------- Downloading ------- ' + filename);
promises.push(new Promise(function p(resolve, reject) {
var checksum = generateChecksum(str);
console.log("Generated Check Sum :", checksum)
download(str, './public/server/img/' + filename, function () {
var stats = fs.statSync('./public/server/img/' + filename)
var fileSizeInBytes = stats["size"]
var fileSizeInMegabytes = fileSizeInBytes / 1000000.0

console.log('Finished Downloading' + " " + filename);
resolve(filename);
}); // add error callback also, call reject() on error
}
));
});`enter code here`

基本下载功能代码

var download = function (url, dest, callback) {
request.get(url)
.on('error', function (err) { console.log(err) })
.pipe(fs.createWriteStream(dest))
.on('close', callback);
};
final_list.forEach(function (str) {
var filename = str.split('/').pop();
console.log('Downloading ' + filename);
download(str, filename, function () { console.log('Finished Downloading' + "" + filename) });
});

不确定你想做什么,但这是你要求的。

fs.read()允许您从文件中的任何位置读取任意数量的字节集。 如果需要,您可以轻松读取前 10k 字节。

fs.stat()为您提供文件大小。

读取文件的第一部分,内容将 Buffer 对象发送到回调:

function readStartOfFile(filename, sizeToRead, callback) {
fs.open(filename, 'r', (err, fd) => {
if (err) {
callback(err);
} else {
let newBuffer = Buffer.alloc(sizeToRead);
// fd, buffer, offset, length, position, callback
fs.read(fd, newBuffer, 0, sizeToRead, 0, (err, bytesRead, buffer) => {
fs.close(fd);
if (err) {
callback(err)
} else {
callback(null, buffer);
}
});
}
});
}
// sample usage
readStartOfFile("somefile.txt", 1024 * 10, (err, buffer) => {
if (err) {
// handle error here
} else {
// use buffer here
}
});

最新更新