Articles of 文件

从文件中读取并find特定的行

我需要根据某些关键字在设置文件(我无法更改格式)中获取信息。 该文件是这样的: username=myusername address=156a1355e3486f4 data=function(i){if (i!=0) return true; else return false;} 系统是<key> = <value> \n 。 值部分可以有= ,空格或其他字符,但不能换行。 密钥是唯一的(在“关键部分”中,它们可以出现在值中,但是\nkey=在每个密钥的文件中只出现一次)。 用一个shell脚本,我发现我的值是这样的: username=`grep ^username file.txt | sed "s/^username=//"` grep将会返回username=someusername ,sedreplacekey和= ,只剩下值。 在node.js中,我想访问文件中的一些数据。 例如,我想要地址和数据的值。 我怎么能在node.js中做到这一点? fs.readFile(file.txt)我不知道该怎么做。 我想我将不得不使用split ,但使用\n似乎不是最好的select,也许正则expression式可以帮助? 理想的情况是“find一个以\nkey=开头的子string,并以第一个\nkey=结尾”,然后我可以很容易地分割来find这个值。

meteorNodeJs base64转换回文件

所以在前面我有这段代码。 uploadCallback (file) { // TODO: Integrate dropbox with its SDK // TODO: Pass the link to the editor console.log('file', file) this.getBase64(file, this) } getBase64 (file, self) { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = function () { console.log('reader.result', reader.result) self.sendFileToServer(reader.result) } reader.onerror = function (error) { console.log('Error: ', error) } } sendFileToServer (base64File) […]

当我们应该使用file.write(…)而不是file.createWriteStream(…)?

file.write(fd,…)和file.createWriteStream(…)什么file.createWriteStream(…) ? 例如:在下面的代码中,两个片段做同样的事情。 var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var newFile = fs.createWriteStream('newFile.txt'); request.pipe(newFile); });, var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var data = ""; request.on('data', function(chunk) { data += chunk.toString(); }); reuqest.on('end', function() { fs.write('newFile.txt', chunk); }); }); 我很困惑,哪一个更好? 谢谢。

将文件从受保护的path下载到浏览器

我有一个反应前端和一个nodejs / express后端。 后端可以通过受保护的路线提供文件(下载): GET /api/file/:id 当前端想要启动一个文件下载时,它使用这个代码向这个端点发送一个请求(并且Authorization头被设置了一个有效的token ): axios.get(`${apiURL}/file/${id}`) .then(file => { … }) 后端回应这个代码: router.get('/file/:id', requireAuth, = (req, res, next) => { … res.set('Content-Type', 'application/pdf'); res.download(file.path, file.filename); };); 这工作正常:下载开始,二进制数据存在于axios调用的axios .then()情况的file对象中。 我的问题: 而不是下载完整的文件,我想在文件下载开始之前将文件传递给浏览器,这样浏览器就像通常的浏览器触发下载一样处理下载,浏览器会提示下载或显示文件。 如何才能做到这一点…? 解决scheme: 感谢@FakeRainBrigand提示,我通过请求参数向路由添加了基于令牌的授权(使用护照策略): const jwtOptions = { jwtFromRequest: ExtractJwt.fromExtractors([ ExtractJwt.fromHeader('authorization'), ExtractJwt.fromUrlQueryParameter('token'), ]), secretOrKey: secretKey, }; 现在我可以将下载直接传递给浏览器来处理它: window.location.href = `${apiURL}/file/${_id}?token=${token}`;

正在复制文件

我有一个Node.js程序周期性地通过目录中的video文件循环。 如果添加或删除文件,程序将更新数据库以反映此更改。 添加文件时,使用FFmpeg生成缩略图。 当我尝试在当前正在复制到目录的文件上运行FFmpeg时遇到问题。 由于文件不完整,FFmpeg无法生成缩略图。 如果我知道一个文件被复制的时候,我可以忽略它,下一次扫描该目录的时候就会被拾取。 如何确定当前是否正在复制文件,或者如何循环目录而忽略当前正在复制的文件?

如何递增写入文本文件并刷新输出

我的Node.js程序 – 这是一个普通的命令行程序,大体上不会做任何exception的操作,没有任何系统特定的或asynchronous的或类似的东西 – 需要不时写信息到文件,然后它会被^ C中断,它需要文件的内容仍然在那里。 我已经尝试使用fs.createWriteStream但只是结束了一个0字节的文件。 (如果程序通过运行主文件的末尾来结束程序,则该文件将包含文本,但这不是我的场景。) 我已经尝试使用winston但最终没有创build文件。 (如果程序通过运行主文件的末尾来结束程序,则该文件将包含文本,但这不是我的场景。) 而fs.writeFile完美的工作,当你有所有你想要fs.writeFile的文字,但似乎并不支持一次追加一行。 推荐的方法是什么? 编辑:我试过的具体代码: var fs = require('fs') var log = fs.createWriteStream('test.log') for (var i = 0; i < 1000000; i++) { console.log(i) log.write(i + '\n') } 运行几秒钟,点击^ C,留下一个0字节的文件。

将持久性数据存储在docker容器目录中

我想用Docker手动cachingnode_modules ,如下所示: COPY . . # copy everything (node_modules is gitignored though) COPY package.json /tmp/test-deps RUN (cd /tmp/test-deps && npm install –no-optional > /dev/null 2>&1) RUN ln -s /tmp/test-deps/node_modules /root/cdt-tests/node_modules 这是有效的,但是在我看来,每次构build容器时都会重新创build/tmp/test-deps/node_modules 。 如何创build一个持久目录,以便我不必每次都重新安装node_modules? 可笑地很难find有关如何cachingDocker任何目录中的任何信息。

如何在不保存本地的情况下将base64数据转换为可读的图像stream

我正在使用Node.js处理Microsoft Bot Framework(在Azure上托pipe),本地保存文件不是一个选项。 我有base64格式的图像数据,我需要将这些数据转换成一个可读的图像文件stream,我可以使用它们的Blob存储API(需要一个stream)将其传输到Azure中。 var base64ImageData; //my base64 image //Create myStream here //Then send to Azure blobService.createBlockBlobFromStream('mycontainer', nameForBlob, myStream, fileSize, function (error, result, response){ if(!error) console.log(response); else console.log(error) }); 任何帮助,将不胜感激。 我无法弄清楚如何解码base64,并从中创build一个stream,而不会将jpg保存到我的磁盘上。

我们如何防止用户上传文件并占用带宽?

场景:我的networking服务器的带宽有限。 用户正在将大file upload到我的nodejs服务器。 我意识到这个尺寸太大了以后就无效了 req.on("data", (chunk) => { size += chunk.size; if(size > 100) { // how would I abort? } }); 我将如何中止上传,并不会消耗用户的分段上传带宽? req.removeAllListeners()会在这种情况下做这个工作吗?

使用节点快递服务静态文件时,正确的脚本path是什么?

我总是遇到问题find正确的path的脚本,它必须是因为我的方式服务静态文件,因为我的path是正确的。 在我的代码中,我试图包含物化框架,但没有find,我不明白为什么。 我在/浏览器中提供我的文件 app.use(express.static(path.join(__dirname, '../browser'))); 从浏览器/ index.html我使用(我相信)正确的道路,但它不工作。 任何帮助将是真棒,所以我不会一直犯同样的错误! 非常感谢你! 航class/服务器/ app.js var express = require('express'); var path = require('path'); var morgan = require('morgan'); var bodyParser = require('body-parser'); var app = express(); module.exports = app; app.use(morgan('dev')); app.use(express.static(path.join(__dirname, '../browser'))); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); var PORT = process.env.PORT || 1337; app.listen(PORT, function() { console.log('Server is listening on […]