怎么通过流, 优雅的实现: 读取文件>计算md5>将文件重命名为md5的值
发布于 8 年前 作者 axetroy 6641 次预览 最后一次回复是 8 年前 来自 问答
在做文件上传.
Koa下可以直接拿到文件对象, 然后保存到本地,代码如下:
const file = ctx.request.body.files.file;
const reader = fs.createReadStream(file.path);
const stream = fs.createWriteStream(path.join(os.tmpdir(), Math.random().toString()));
reader.pipe(stream);
console.log('uploading %s -> %s', file.name, stream.path);
想着在中间加上层MD5校验,计算完md5之后, 再以md5的字符串为文件名存储起来。
请教各位, 怎么加上去?
目前是在写流finish之后, 给通过md5重命名…这个总感觉哪里不对, 命名内存
node官网参考:
const crypto = require('crypto');
const fs = require('fs');
const hash = crypto.createHash('sha256');
const input = fs.createReadStream('test.js');
input.pipe(hash).pipe(process.stdout);
3 回复
当然是完成后改名。
From PWA CNode
如果只是重命名防止重复上传,直接md5 就可以了。 这样可以吗?
上传的数据都落到磁盘上了,直接用现成工具就好了吧:
代码少,效率绝对比你用 node 处理高。