问题集:客户。来自表单操作的图片=' / 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
}
答案 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,允许您从前端进行后端呼叫 希望这有帮助!