Node.js响应来自图像上传而不刷新客户端页面

时间:2018-01-28 19:00:50

标签: express

问题集:客户。来自表单操作的图片=' / pages / contact / image / something'到node.js和我.putItem到AWS S3。在成功响应中,我想将图像URL发送回客户端而不刷新屏幕并更新他们想要用新的src url添加图像的位置。

如果页面刷新,我将失去他们想要上传图片的位置。打开任何建议,我看了res.send,res.end,res.json,res.jsonp,res.send(回调):所有这些都覆盖(刷新)客户端网页中的数组,文本或上下文一般我回传给客户。代码如下:

    myrouter.route('/Pages/:Page/Image/:Purpose')
        .post(function (req, res) {
            controller.addImageToS3(req, res)
                .then(function(imgurl){
                    //res.json({imgurl : imgurl});
                    //res.send(imgurl);
                    //res.end(imgurl);
                   //res.send(req.query.callback(imgUploadResponse(imgurl)))
                    <response mechanism here>
                    console.log('Image Upload Complete');
               }, function (err){
                    res.render('Admin/EditPages', {
                       apiData : apiData,
                       PageId : PageId
                    });
               });
        });

理想情况下,我可以使用javascript函数传递参数:示例:

function imgUploadResponse(imgurl){
    // Do something with the url
}

1 个答案:

答案 0 :(得分:0)

作为开发人员,您可以完全控制s3 url格式。它遵循一个简单的约定:

  

s3-region.amazonaws.com/your-bucket-name/your-object-name。

例如:

  

https://s3-us-west-2.amazonaws.com/some-random-bucket-name/image.jpg

虽然我建议在后端保留这些细节,但如果你真的想避免使用res.send,你基本上可以让前端知道url格式约定并向用户呈现url,甚至在图像实际上传之前(只需要将图像的名称附加到s3-region.amazonaws.com/your-bucket-name)

另外,我不确定为什么你的页面会刷新。有一些方法可以在不刷新整个页面的情况下刷新页面内容,最基本的是AJAX。像angular这样的框架为您提供promises,允许您从前端进行后端呼叫 希望这有帮助!