直接上代码,这是第一版,可以判断扩展名

var http = require('http');
var express = require('express');
var fs=require("fs");
var path=require("path");
var mime = require('mime');
var app = express();
var currDir = 'F:\\Users\\djyk\\74dj.mp3';
app.get('*', function (req, res, next) {
var reqpath = decodeURI(req.path);
console.log(reqpath);
var filepath = path.join(currDir,reqpath);
fs.lstat(filepath, function(err, stat) {
if(err){
if (err.code === 'ENOENT') {
res.writeHead(404);
res.end("404 Not Found");
return;
}
res.writeHead(500);
res.end(JSON.stringify(err));
return;
}
if(stat.isDirectory()) {
res.writeHead(403);
res.end("403 Forbidden");
return;
}
if (path.extname(filepath) !== '.mp3') {
res.writeHead(400);
res.end("400 Bad Request");
return;
}
var f = fs.createReadStream(filepath);
const row = {};
row['Content-Type'] = mime.getType(reqpath);
row['Content-Disposition'] = 'attachment; filename=' + encodeURI(path.basename(reqpath));
res.writeHead(200, row);
f.pipe(res);
});
});
http.createServer(app).listen(50074);

Node.js 搭建HTTP服务器,提供文件下载的更多相关文章

  1. 使用 Node.js 搭建 Web 服务器

    使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...

  2. node.js搭建Web服务器

    Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...

  3. 学习 node.js 搭建web服务器

    开始 学习使用 node.js 首先完成搭建一个 web服务器.myweb.js var http = require('http'); var url = require('url'); var h ...

  4. 用node.js搭建本地服务器

    我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...

  5. Node.js学习笔记(五) --- 使用Node.js搭建Web服务器

    1. Node.js 创建的第一个应用 1.引入http模块 var http = require("http"); 2. 创建服务器接下来我们使用 http.createServ ...

  6. 使用原生node.js搭建HTTP服务器,支持MP4视频、图片传输,支持下载rar文件

    前言 如何安装node.js,如何搭建一个简易的http服务器我这里就不再赘述了,不懂的同学可以先去学习一下.当然了,我写的也就属于简易版的增强版,大家有什么高见的欢迎提出,然后进入正题. 目录结构 ...

  7. node.js搭建https服务器

    HTTPS简介 HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...

  8. express+node.js搭建的服务器和在sublimeServer下的页面请求报跨域错误

    1.前端页面使用vue中的axios请求nodejs响应.报以下错误: Failed to load http://localhost:3000/users/validate: Response to ...

  9. 使用node.js搭建本地服务器

    第一步安装node:https://nodejs.org/zh-cn/download/ 接下来就需要安装http的镜像文件 打开cmd:输入以下命令 npm install http-server ...

随机推荐

  1. Ubuntu18.10下运行blender2.80bate闪退(问题?)

    Ubuntu18.10下直接运行blender2.80bate闪退, 运行blender2.79正常. ================= root@tom-laptop:/# uname -aLin ...

  2. 简单的Windows应用程序命名规则

    读书:<高质量C++编程指南> 作者对“匈牙利”命名规则做了合理的简化,下述的命名规则简单易用,比较适合于Windows应用软件的开发. l [规则3-2-1]类名和函数名用大写字母开头的 ...

  3. Java中的Graphics2D类基本使用教程

    Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管理以及文字布局等更精确的 ...

  4. RPC简介及框架选择

    简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...

  5. CSS Overrides: Friend or Foe?

    转自:http://www.callumhart.com/blog/css-overrides-friend-or-foe Anyone familiar with CSS will know how ...

  6. How to get checksum by IAR

  7. AI 学习

    极简状态机: /* 脚本名称: 脚本作者: 建立时间: 脚本功能: 版本号: */ using UnityEngine; using System.Collections; namespace Voi ...

  8. js中的eval函数另一种实现

    js中有一个函数eval可以一段文本改为js代码,本来使用eval也可以达到目的,但自己看了不少资料都不推荐使用eval函数,于是自己就在思考有没有不使用eval的方法?  其实需求很简单,就是把一个 ...

  9. Dynamics CRM Solution

    Default solution Dynamics comes pre-loaded with a Default Solution Contains all the base objects, en ...

  10. Hi3520DV200和Hi3520DV300

    处理器:V200---arm A9 600M主频V300---arm A7 800M主频 编码解码能力:V200---8路D1或者4路720PV300---8路D1或者4路1080p或者9路720p ...