【问题标题】:Sending text to the browser向浏览器发送文本
【发布时间】:2012-04-18 07:07:39
【问题描述】:

我已经设法在 Node.js 中使用 Express 进行文件上传工作,并且在代码中我正在检查它是否是用户尝试上传的图像。

如果文件已成功上传,我想向用户显示一条消息,直接向带有上传表单的 HTML 页面显示。如果用户尝试上传的文件不是图像,或者在上传过程中发生了其他事情,情况也应该如此。

下面的代码有效(res.send...),但它会打开一个只包含消息的新页面。

我的问题是:如何更改我的代码,以便将消息直接发送到 HTML 页面?如果它有任何用处,我正在使用 Jade。

提前致谢!

app.post('/file-upload', function(req, res, next) {
    var fileType = req.files.thumbnail.type;
    var divided = fileType.split("/");
    var theType = divided[0];

    if (theType === "image"){
        var tmp_path = req.files.thumbnail.path;

        var target_path = './public/images/' + req.files.thumbnail.name;

        fs.rename(tmp_path, target_path, function(err) {
            if (err) throw err;

            fs.unlink(tmp_path, function() {
                if (err) {
                    throw err;
                    res.send('Something happened while trying to upload, try again!');
                }
                res.send('File uploaded to: ' + target_path + ' - ' + req.files.thumbnail.size + ' bytes');
            });
        });
    }

    else {
        res.send('No image!');
    }

});

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

    据我了解,您正在尝试向已打开的浏览器窗口发送消息?

    你可以做一些事情,

    1. Ajax 它,发送帖子,并处理返回信息。
    2. 像现在一样提交它,但设置一个 Flash 消息(查看 http://github.com/visionmedia/express-messages)并 res.render 表单页面,或 res.redirect 到表单函数
    3. now.js 或类似的解决方案。这将允许客户端使用服务器端函数和服务器端代码来运行客户端函数。所以你要做的是在提交时,将帖子值传递给服务器端函数,服务器端函数将处理它并触发客户端函数(显示一条消息)

    对于我来说,选项 #2 可能是最安全的选择,因为没有启用 javascript 的客户将能够使用它。至于可用性,#1 或#3 会为最终用户提供更流线型的外观。

    【讨论】:

      【解决方案2】:

      您可以使用 WebSocket。我推荐使用 Socket.IO,它很容易使用。在客户端,您将拥有一个事件处理程序,该处理程序将使用 JavaScript 将新信息附加到该页面。

      然后你可以让服务器例如说:

      socket.emit('error', "Something happened while trying to upload, try again!");
      

      客户会使用:

      socket.on('error', function(data){
        //alert?
        alert(data);
      });
      

      http://socket.io/#how-to-use

      【讨论】:

        猜你喜欢
        • 2016-04-21
        • 1970-01-01
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 2012-10-26
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多