如何解决如何正确启动http服务器并在不同文件夹中托管许多源文件
因此,问题是: 我需要为正在运行的应用托管一些文件,以便从HTTP服务器获得所有响应。如果我在源文件夹中启动HTTP服务器-则一切正常,我可以获取所有文件。但是我需要在源文件夹上方启动HTTP服务器,因为我有很多服务器。假设我有100个不同的源文件夹。这是否意味着我需要启动100台服务器?为了避免这种情况,我想运行单个全局HTTP服务器。另外,我在源文件夹中有映射,该映射将路径(硬编码)提供给资源,并且此路径从源文件夹开始,例如:source / some_file.png 如果我在此目录中运行服务器,则可以访问url上的文件 http:// localhost:8083 / some_file.png。 但是,如果我在上面的文件夹中启动服务器,例如:main_dir / source,则无法访问文件http:// localhost:8083 / some_file.png。而且我的响应失败,错误代码为404。 我试图拦截请求并注入路径文件夹,以便获得URL文件地址http:// localhost:8083 / source / some_file.png。它正在工作,但是然后我有不同的错误。 可能还有其他方法来启动全局http服务器并访问路径下面的一个文件夹中的文件吗?
解决方法
我找到了一个有关使用内置于服务器doc中的NodeJS来提供文件的文档。 因此,有两种可能性:
- 使用列表自己提供文件
const fs = require('fs');
const http = require('http');
const folderArray = ["main_dir","another_dir",...];
http.createServer(function (req,res) {
folderArray.forEach((folder) => {
try {
fs.accessSync(`${folder}/${}req.url` /* Change req.url for your url or parameter */,fs.constants.F_OK);
console.log('File exists');
const data = fs.readFileSync(`${folder}/${}req.url`); // Handle this error correctly
res.writeHead(200);
res.end(data);
// You would want to break the loop here as it's already served.
} catch (err) {
console.error('No file!');
}
});
}).listen(8080);
- 或者让模块为您完成此操作:node-static(当然,请使用文件夹数组:D修改服务器文件夹)。
如果要下载文件,请查看以下答案:download file with express。
干杯?!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。