Node.js 搭建HTTP服务器,提供文件下载
直接上代码,这是第一版,可以判断扩展名
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服务器,提供文件下载的更多相关文章
- 使用 Node.js 搭建 Web 服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...
- node.js搭建Web服务器
Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...
- 学习 node.js 搭建web服务器
开始 学习使用 node.js 首先完成搭建一个 web服务器.myweb.js var http = require('http'); var url = require('url'); var h ...
- 用node.js搭建本地服务器
我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...
- Node.js学习笔记(五) --- 使用Node.js搭建Web服务器
1. Node.js 创建的第一个应用 1.引入http模块 var http = require("http"); 2. 创建服务器接下来我们使用 http.createServ ...
- 使用原生node.js搭建HTTP服务器,支持MP4视频、图片传输,支持下载rar文件
前言 如何安装node.js,如何搭建一个简易的http服务器我这里就不再赘述了,不懂的同学可以先去学习一下.当然了,我写的也就属于简易版的增强版,大家有什么高见的欢迎提出,然后进入正题. 目录结构 ...
- node.js搭建https服务器
HTTPS简介 HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- express+node.js搭建的服务器和在sublimeServer下的页面请求报跨域错误
1.前端页面使用vue中的axios请求nodejs响应.报以下错误: Failed to load http://localhost:3000/users/validate: Response to ...
- 使用node.js搭建本地服务器
第一步安装node:https://nodejs.org/zh-cn/download/ 接下来就需要安装http的镜像文件 打开cmd:输入以下命令 npm install http-server ...
随机推荐
- 《DSP using MATLAB》Problem 6.20
先放子函数: function [C, B, A, rM] = dir2fs_r(h, r); % DIRECT-form to Frequency Sampling form conversion ...
- Java基础二(变量、运算符)
1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...
- Centos7 安装redis及其入门使用
wget -c http://download.redis.io/releases/redis-3.2.9.tar.gz #下载源码 tar -xvf redis-3.2.9.tar.gz #解压 c ...
- pushpin 将web services 转换为realtime api 的反向代理工具
pushpin 是一款反向代理工具,可以将web services 转换为实时的api 参考架构图 包含的特性 透明 无状态 共享nothing 发布&&订阅模型 几种灵活用法 基本使 ...
- GraphQL Gateway Architectures
转自: https://tomasalabes.me/blog/graphql/node/microservices/2018/08/11/graphql-architectures.html Gra ...
- IBM WebSphere MQ介绍安装以及配置服务详解
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- Zabbix-2.4-安装-4
Zabbix api 对于以上两种方式,有些人都不选,倾向于使用第三种:使用zabbix api加上这个监控在把这台机器删除了,然后discovery和自动注册的都关闭了再换一种方式把它加进去,zab ...
- .NET设计模式 第二部分 创建型模式(2)—抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory) ——探索设计模式系列之三 Terrylee,2005年12月12日 概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时由于需求的变 ...
- 大数据离线分析平台 JavaSDK数据收集引擎编写
JavaSDK设计规则 JavaSDK提供两个事件触发方法,分别为onChargeSuccess和onChargeRefund.我们在java sdk中通过一个单独的线程来发送线程数据,这样可以减少对 ...
- pyhanlp 中文词性标注与分词简介
pyhanlp 中文词性标注与分词简介 pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式 第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分 ...