使用node.js和Ni框架的图像服务器

发布于 2024-11-06 12:56:58 字数 825 浏览 0 评论 0原文

我使用 Ni 框架(该框架又使用 Quip)作为节点,其中有一个名为 asset 的控制器,具有用于图像、文件等的方法。

当您访问 domain.com/ 时,images 方法将获取并显示图像。 assets/images/imagename.png

但是,它显示的是图像的原始数据,而不是图像本身。

我已经设置了标题和内容类型。我的代码是:

var Ni      = require('../lib/ni'),
    mime    = require('mime'),
    fs      = require("fs");

var AssetsController = function(){
    this.images  = function(req, res, next, fileName) {
        var path    = './assets/images/'+fileName;

        var image   = fs.readFile(path, "binary", function(error, data){
            if(error) throw error;

            res.writeHead(200, {
                'Content-Type' : mime.lookup(path),
                'Content-Transfer-Encoding' : 'binary'
            });
            res.send(data);
        });
    }
}


module.exports = new AssetsController();

I'm using the Ni framework (which in turn uses Quip) for node, within which there is a controller called assets, with methods for images, files etc.

The images method would fetch and display and image when you visit domain.com/assets/images/imagename.png

However it is displaying the raw data for the image, instead of the image itself.

I have set headers and content type. The code I have is:

var Ni      = require('../lib/ni'),
    mime    = require('mime'),
    fs      = require("fs");

var AssetsController = function(){
    this.images  = function(req, res, next, fileName) {
        var path    = './assets/images/'+fileName;

        var image   = fs.readFile(path, "binary", function(error, data){
            if(error) throw error;

            res.writeHead(200, {
                'Content-Type' : mime.lookup(path),
                'Content-Transfer-Encoding' : 'binary'
            });
            res.send(data);
        });
    }
}


module.exports = new AssetsController();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

焚却相思 2024-11-13 12:56:58

我在提供图像时使用这段代码并正确显示它们:

fs.readFile(path, function(err, data){
    res.writeHead(200, {"Content-Type": "image/png"});
    res.write(data, "binary");
    res.end();
});

I use this piece of code when serving images and it displays them correctly:

fs.readFile(path, function(err, data){
    res.writeHead(200, {"Content-Type": "image/png"});
    res.write(data, "binary");
    res.end();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文