Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据扩展名将express 4.0公用文件夹中的文件作为格式化html而不是文件提供服务?例如,格式化JSON、显示图像_Javascript_Json_Express_Jpeg - Fatal编程技术网

Javascript 如何根据扩展名将express 4.0公用文件夹中的文件作为格式化html而不是文件提供服务?例如,格式化JSON、显示图像

Javascript 如何根据扩展名将express 4.0公用文件夹中的文件作为格式化html而不是文件提供服务?例如,格式化JSON、显示图像,javascript,json,express,jpeg,Javascript,Json,Express,Jpeg,嘿,所以每当我把东西放在我的express目录的“public”目录中,它就会自动在我的网页上有一个我喜欢的链接。例如,转到将允许我下载一个图像,并允许我下载一个JSON文件,除了将这些文件放在我的公用文件夹中之外,我无需做任何事情。这非常方便,因为我有另一个脚本,它可以生成一堆不同的东西,我不想每次更改某些东西时都在服务器上按名称指定这些东西 我想做的是修改这个serve命令,这样当我想要检索图像而不是自动下载它时,它会在浏览器中显示它。这应该很简单,只要在公用文件夹中以.png文件结尾的任何

嘿,所以每当我把东西放在我的express目录的“public”目录中,它就会自动在我的网页上有一个我喜欢的链接。例如,转到将允许我下载一个图像,并允许我下载一个JSON文件,除了将这些文件放在我的公用文件夹中之外,我无需做任何事情。这非常方便,因为我有另一个脚本,它可以生成一堆不同的东西,我不想每次更改某些东西时都在服务器上按名称指定这些东西

我想做的是修改这个serve命令,这样当我想要检索图像而不是自动下载它时,它会在浏览器中显示它。这应该很简单,只要在公用文件夹中以.png文件结尾的任何内容周围添加一个
。类似地,我希望对任何JSON文件进行字符串化,使其以可读格式显示(JSON.stringify(object,null,2))


基本上,我希望能够把一些东西放在我的公用文件夹中,并根据其文件扩展名自动访问它。在这两种情况下,“理想的”方式不是下载文件,而是以人性化的格式在浏览器中显示文件

在nodejs中显示静态文件不是一个简单的行为。您通常会将一个文件夹设置为静态文件夹,该文件夹将变为公共文件夹,并且结束url片段与文件名相同。将Express与Nodejs一起使用,看起来是这样的

app.use(express.static(path.join('.', 'public')));
因为您不喜欢默认实现,所以您可以手动解析url,检查是否存在同名文件,将其包装在适当的html中,并将其作为响应抛出

var fs = require('fs');
app.use(function(req, res, next){
    fileName = req.url.substring('https://website.com/'.length);
    if(fs.existsSync('public/'+fileName){
        if(fileName.substring(fileName.lastIndexOf('.')+1)=='jpg')
            res.send('<html><body><img src="public/'+fileName+'"></img></body></html>')
})
var fs=require('fs');
应用程序使用(功能(请求、恢复、下一步){
fileName=req.url.substring('https://website.com/"长度),;
if(fs.existsSync('public/'+文件名){
if(fileName.substring(fileName.lastIndexOf('.')+1)='jpg')
res.send(“”)
})
如您所见,所有URL都会检查文件。您还可以使用路由器将所有公共文件放置在某些子目录下,如“/public”