nodejs + express 實(shí)現(xiàn) http文件下載服務(wù)程序,
主要包括兩個(gè)功能:指定目錄的文件列表,某個(gè)文件的下載。
假設(shè)已經(jīng)安裝好 nodejs ;
cd /js/node_js ; 安裝在當(dāng)前目錄的 node_modules/
npm install express --save?
npm install express-generator --save
D:\js> node node_js/node_modules/express-generator -e blog
create : blog\
create : blog\public\
create : blog\public\javascripts\
create : blog\public\images\
create : blog\public\stylesheets\
create : blog\public\stylesheets\style.css
create : blog\routes\
create : blog\routes\index.js
create : blog\routes\users.js
create : blog\views\
create : blog\views\error.ejs
create : blog\views\index.ejs
create : blog\app.js
create : blog\package.json
create : blog\bin\
create : blog\bin\www
cd blog
install dependencies:
? ? ?> npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
added 54 packages from 38 contributors and audited 55 packages in 8.769s
編寫模板文件?blog/views/files.ejs 如下
<!DOCTYPE html>
<html>
<head>
<title>下載文件選擇</title>
</head>
<body>
<h1>請選擇下載文件:</h1>
<% if(files.length>0) {%>
<ul>
<% files.forEach(function(file){ %>
<li>
<a href="/file/<%- file %>" target="_blank"><%- file %></a>
</li>
<%})%>
</ul>
<%} else {%>
<p>沒有可下載文件…</p>
<%}%>
</body>
</html>
編寫web服務(wù)程序? blog/expres_download.js 如下文章來源:http://www.zghlxwxcb.cn/news/detail-732344.html
//var http = require('http');
var express = require('express');
var fs = require('fs');
var path = require('path');
var logger = require('morgan');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
// 首頁
app.get('/', function(req,res){
res.end('<a href="/files"> 文件列表 </a>');
});
// 指定目錄
const dir = "/Books";
// 顯示指定目錄的文件列表
app.get('/files', function(req, res, next) {
// ls 文件目錄
//var filePath = path.join(__dirname, './');
var filePath = path.join(dir, './');
fs.readdir(filePath, function(err, results){
if(err) throw err;
if(results.length>0) {
var files = [];
results.forEach(function(file){
if(fs.statSync(path.join(filePath, file)).isFile()){
if (path.extname(file) === '.pdf'){
files.push(file); //僅顯示.pdf文件
}
}
});
res.render('files', {files:files});
} else {
res.end('當(dāng)前目錄下沒有文件');
}
});
});
// 實(shí)現(xiàn)文件下載
app.get('/file/:fileName', function(req, res, next) {
var fileName = req.params.fileName;
var filePath = path.join(dir, fileName);
var stats = fs.statSync(filePath);
if(stats.isFile()){
res.set({
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment;',
'Content-Length': stats.size
});
//'Content-Disposition': 'attachment; filename='+encodeURI(fileName),
fs.createReadStream(filePath).pipe(res);
} else {
res.end('404');
}
});
app.listen(8080, "127.0.0.1", function() {
console.log('web server 正在運(yùn)行 http://127.0.0.1:8080')
});
運(yùn)行 node expres_download.js?文章來源地址http://www.zghlxwxcb.cn/news/detail-732344.html
到了這里,關(guān)于nodejs + express 實(shí)現(xiàn) http文件下載服務(wù)程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!