Tag: file upload

跟踪客户端上的Nodejs服务器进度

我有一个服务器在nodejs上传一个大型数据文件的地方。 我在客户端上使用angular-file-upload来做这件事,这有助于我通过一组callback函数来跟踪上传进度。 但是当上传完成时,服务器开始处理数据(转换格式并上传到用户指定的数据库)。 我想跟踪这个进度以及上传的同样方式,启动另一个进度条。 什么是正确的方法来做到这一点? 通过互联网,我明白,套接字可能是要走的路。 这是否使我的angular度file upload过时,还是有另一种方式来做到这一点? 上传完成后是否build立新连接,还是使用上传连接,并将进度信息返回给客户端? Socket.io确实有一套关于如何设置聊天发送消息给客户端的很好的教程,但是这并不能真正覆盖我更复杂的情况。 任何正确的方向指针将非常感激。

如何在Node.js中使用multer上传文件?

我想用MULTER上传图片。 但它不工作。 这里有什么问题? 这段代码在我的路由文件中。 var multer = require('multer'); var upload = multer({ dest: 'public/uploads/' }); 这是我的邮政路线。 router.post('/addNewFood', upload.single('avatar'),function (req, res, next) { console.log(req.files); });

如何模拟客户端中止

我被困在我的一个testing中。 在我的testing中,我需要检测客户端(浏览器)已经取消或中止图片上传。 我的问题是如何模拟连接中止的时间。 在我的控制器中,我可以模拟连接丢失,并且我的代码正确地反应。 但正如我所提到的问题仍然是如何从testing中触发。 我使用摩卡3.2.0作为testing套件,而在控制器端我使用多方 。 这是原始的代码: return new Promise((resolve, reject) => { let form = new multiparty.Form(); let fileCount = 0; form.on('part', function (part) { fileCount++; let tmpFile = path.join(os.tmpDir(), `${userId}_${timePrefix}_${path.basename(part.filename)}`); part.pipe(fs.createWriteStream(tmpFile)); part.on('end', () => { resolve(fs.createReadStream(tmpFile)); }); part.on('error', function (error) { reject(error); }); }); form.on('error', (error) => { reject(new LogicalError( `Image input […]

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

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

将缓冲的文件数据转换为Json对象:express-fileupload

我通过http发送一个JSON文件。 该文件在req.files使用express-fileupload中间件提供。 我正在获取文件作为缓冲的数据。 我想将文件转换为JSON对象。 app.post('/start', function(req, res){ if(!req.files.seed) res.status(400).send("Please upload the seed file"); var file = req.files.seed; var obj = //Convert the file to JSON object and send it to create instance; instance.createInstance(obj); res.status(200).send("Started…."); }); 打印时,文件看起来像这样 { name: 'seed.json', data: <Buffer 7b 0d 0a 09 22 61 72 72 61 79 22 3a 20 5b […]

如何知道一个文件中的行数,而无需将其内容加载到JavaScript中的内存?

简要: 一个将加载CSV文件的系统,但预计会很大 (+ 1M行)。 我已经知道如何使用队列和后台作业/任务来处理它们。 但, 我想向用户显示他的文件中的进度,如下所示: 1246875的2165或者百分比。 要存档这个,我需要知道文件中的行数,但是我不得不将它的内容加载到内存中,所以它可以很快,只要我上传,可以保存文件中的文件在其中find了全部的行。 在PHP中,这可能使用SplFileObject试图seek()到PHP_MAX_INT ,然后它到达它可以在文件中的最高行, key()返回该行。 但是这个系统是完全用JavaScript / Node.js构build的,所以为了方便,我想用JavaScript来构build这个系统部分。 我怎么能做到这一点? 已经看过FS API了 ,但没有find如何去做到这一点。 [编辑] 迄今为止的想法: child_process.exec + wc -l (仅适用于Unix) 使用FileReader从客户端获取此信息(将资源委托给用户)

在mongodb中通过binDatatypes上传小文件

我想通过BinDatatypes将大小小于16MB的小file upload到MongoDB ,我知道这是小文件的唯一默认选项,而GRIDFS理想地用于超过16MB的文件。 不幸的是,我不能轻易得到正确的文档和上传文件的例子,没有在MongoDB文档上的GridFS。 我发现有关BinDatatypes的信息要么非常有限,要么我不明白。 通过几个类似的问题(主要是基于python的)和其他地方,我对BinData的使用有了一些想法,但仍然无法以这种方式成功上传文件。 我需要通过BinData上传文件的更多信息,特别是正确的方式来初始化,因为我通常得到的BinData not a function或BinData is not defined错误。 以下是我正在testingfunction的当前代码: import { Meteor } from "meteor/meteor"; import { Mongo } from "meteor/mongo"; export const Attachment = new Mongo.Collection("attachment"); let BinData = Mongo.BinData; //wrong initialisation function createAttachment(fileData) { const data = new Buffer(fileData, "base64"); Attachment.insert({file: new BinData(0, data)}); } 一些有用的链接: 蒙大的BSONtypes BSON规格

node.js knox教程 – 如何用node.js上传文件

如何使用knox上传带有node.js的文件? https://github.com/LearnBoost/knox 上传到node.js的完整代码是什么,从路由到用knox上传? 我认为那里的文档只涵盖了他们把它放到s3上的部分。 举例: fs.readFile('Readme.md', function(err, buf){ var req = client.put('/test/Readme.md', { 'Content-Length': buf.length , 'Content-Type': 'text/plain' }); req.on('response', function(res){ if (200 == res.statusCode) { console.log('saved to %s', req.url); } }); req.end(buf); }); 但Readme.md从哪里来? 谢谢。

在Node.js中如何将multipart / form-data上传的图像转换为base64格式

我想让用户从本地文件系统中select一个图像,然后将这个图像渲染到页面上的一个canvas元素。 由于安全约束('沙盒'浏览器安全模型),客户端javascript不能直接访问文件系统上的映像,因此必须从file upload控件中以“multipart / form-data”的forms往返服务器。 我不想实际上将这个图像保存在服务器上并提供,因为这只是一次性的客户端操作目的。 所以,我想知道是否有可能将服务器端的图像数据转换成可以发送回客户端的base64编码表示。 然后,我可以很容易地把它作为数据的URL,而不需要将图像保存在服务器上的任何地方。 或者,还有更好的方法? 我在服务器上使用node.js。

Node.js YouTube API上传无法转换video

我正尝试以编程方式将video上传到YouTube。 我select使用Node.js来完成任务。 我得到一个XML响应以及一个HTTP状态代码201,我看到video出现在videopipe理器中,但video总是有“失败(无法转换video文件)”信息。 我可以通过他们自己的页面上传自己的上传file upload文件,没有问题。 我只需要上传到一个帐户,所以我设置了帐户的OAuth2并存储了刷新令牌。 刷新标记是硬编码的,尽pipe我将其replace为下面的variables。 刷新标记本身是否需要刷新? 我的代码: var qs = require('querystring'), https = require('https'), fs = require('fs'); var p_data = qs.stringify({ client_id: myClientID, client_secret: myClientSecret, refresh_token: refreshTokenForAccount, grant_type: 'refresh_token' }); var p_options = { host: 'accounts.google.com', port: '443', method: 'POST', path: '/o/oauth2/token', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': p_data.length, 'X-GData-Key': myDeveloperKey } }; var […]