如何使用 node.js 获取图像上传进度并在我的 iphone 应用程序中使用它
Posted
技术标签:
【中文标题】如何使用 node.js 获取图像上传进度并在我的 iphone 应用程序中使用它【英文标题】:How to get the image upload progress using node.js and use it in my iphone app 【发布时间】:2014-02-28 06:27:49 【问题描述】:我不知道如何使用 node.js 获取当前的上传进度,也不知道如何将进度值发送到我的 iphone 客户端应用程序。我目前有这样的代码,但它只保存图像文件并将图像文件名保存到数据库中。
app.post('/event', function (req, res)
fs.readFile(req.files.displayImage.path, function (err, data)
var newPath = __dirname + '/uploads/' + req.files.displayImage.name;
fs.writeFile(newPath, data, function (err)
if (!err)
var pic = req.files.displayImage.name;
connection.query('INSERT INTO Event SET ?', pic: pic, function (error, result)
if (error)
res.send(error, 400);
else
res.send(insertId: result.insertId, 200);
);
);
);
);
【问题讨论】:
这似乎是两个问题:如何返回进度,以及如何使用它。虽然我可以帮助您解决第一个问题,但您可能想为后者打开另一个问题,因为您没有提供任何有关您计划如何使用它的信息。 【参考方案1】:与 node 中的其他所有内容一样,有一个 node 模块(名为 node-upload-progress)。虽然我没有亲自使用它,但它看起来很坚固。由于您似乎在使用Express
,我将在我的示例中执行相同的操作:
首先需要设置uploadHandler:
var app = express();
var uploadHandler = require('node-upload-progress');
uploadHandler.configure(function()
return this.uploadDir = "" + __dirname + "/uploads";
);
app.post('/event', function (req, res)
return uploadHandler.progress(req, res);
);
看code,貌似这个会返回200状态码,上传数据是json对象。
至于您可以使用它的示例,请查看此html file,我从中发布了以下 sn-p。这个 sn-p 展示了如何使用来自客户端的 ajax 调用定期检查进度状态。
uploadIntervalID = setInterval(function()
$.get('/progress?X-Progress-ID=' + xProgressID, function(data)
if(data.status === 'done')
clearInterval(uploadIntervalID);
updateUploadStatus(data);
).error(function()clearInterval(uploadIntervalID));
, 250);
【讨论】:
感谢您提及此模块。我去看看。以上是关于如何使用 node.js 获取图像上传进度并在我的 iphone 应用程序中使用它的主要内容,如果未能解决你的问题,请参考以下文章
使用 Node JS 从 Amazon S3 私有存储桶中检索图像
如何在上传后立即接收 Cloudinary 图像 URL(React JS 和 Node Js)?