如何使用 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 私有存储桶中检索图像

Node js - 在上传时配置 aws s3 图像

如何在上传后立即接收 Cloudinary 图像 URL(React JS 和 Node Js)?

如何使用 node js 将图像上传并保存到 mongodb

如何使用 Node.js 读取/写入图像?

如何使用其他字段进行文件上传,例如:使用 Vue.js 在 Node.js 中的标题、名称、图像、image2