|
最近遇着个事,得一直发文件给同事,但是微信发东西是真的难绷,思来想去,用php写吧又要搭环境,太浪费时间,干脆用nodejs来试试。
#第一步
下载安装nodejs
地址:https://nodejs.org/zh-cn/download/package-manager
不知道怎么装环境的可以看下nodejs官网的指南
#第二步
写代码,创建一个文件,命名为server.js。
具体代码内容如下:
- const http = require('http');
- const fs = require('fs');
- const path = require('path');
- const PORT = 8080;
- const LIST_DIR = '/list'; // 设定一个特殊路径来触发目录列出
- const server = http.createServer((req, res) => {
- if (req.method === 'GET') {
- if (req.url === LIST_DIR) {
- // 列出当前目录下的所有文件和文件夹
- fs.readdir(__dirname, (err, files) => {
- if (err) {
- res.writeHead(500, { 'Content-Type': 'text/plain' });
- res.end('Internal Server Error: Could not read directory');
- return;
- }
- let response = '<html><head><title>Directory Listing</title></head><body>\n';
- response += '<h1>Directory Listing:</h1>\n';
- response += '<ul>\n';
- files.forEach(file => {
- const encodedFile = encodeURIComponent(file);
- response += `<li><a href="http://localhost:${PORT}/${encodedFile}">${file}</a></li>\n`;
- });
- response += '</ul>\n';
- response += '</body></html>';
- res.writeHead(200, { 'Content-Type': 'text/html' });
- res.end(response);
- });
- } else {
- const filePath = path.join(__dirname, req.url === '/' ? 'index.html' : req.url);
- fs.exists(filePath, (exists) => {
- if (exists) {
- fs.readFile(filePath, (err, data) => {
- if (err) {
- res.writeHead(500, { 'Content-Type': 'text/plain' });
- res.end('Internal Server Error');
- return;
- }
- const fileName = path.basename(filePath);
- let contentType = 'application/octet-stream';
- res.writeHead(200, {
- 'Content-Type': contentType,
- 'Content-Disposition': `attachment; filename="${fileName}"`
- });
- res.end(data);
- });
- } else {
- res.writeHead(404, { 'Content-Type': 'text/plain' });
- res.end('Not Found');
- }
- });
- }
- } else {
- res.writeHead(405, { 'Content-Type': 'text/plain' });
- res.end('Method Not Allowed');
- }
- });
- server.listen(PORT, () => {
- console.log(`Server is running on http://localhost:${PORT}`);
- });
复制代码 然后执行node server.js
访问http://localhost:8080/list就能看到当前执行目录下的文件了。
|
|