国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

nodejs + express 實(shí)現(xiàn) http文件下載服務(wù)程序

這篇具有很好參考價(jià)值的文章主要介紹了nodejs + express 實(shí)現(xiàn) http文件下載服務(wù)程序。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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 如下

//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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于 HTTP Range 實(shí)現(xiàn)文件分片并發(fā)下載!

    基于 HTTP Range 實(shí)現(xiàn)文件分片并發(fā)下載!

    目錄 前言 基礎(chǔ)下載功能 進(jìn)階下載功能 單片下載 多片下載? 瀏覽器發(fā)送預(yù)檢(preflight)請求 express 不支持多段 range multipart/** 搭配 boundary=** 分片下載功能 “只讀的” ArrayBuffer 對象 DataView 子類?Uint8Array?操作二進(jìn)制數(shù)據(jù) Blob + createObjectURL 創(chuàng)建 url 全部代碼 通用的文件分片下載

    2024年02月10日
    瀏覽(20)
  • 三分鐘用Golang搭建一個(gè)HTTP文件上傳下載服務(wù)器

    三分鐘用Golang搭建一個(gè)HTTP文件上傳下載服務(wù)器

    簡單需要一個(gè)文件服務(wù)器來傳遞數(shù)據(jù),只要兩個(gè)功能,一個(gè)上傳接口,一個(gè)下載接口。 選用go http模塊實(shí)現(xiàn),比nginx、ftp等更方便快捷。 上傳接口\\\"/v1/file_upload/\\\" 上傳接口增加簡單BasicAuth鑒權(quán) 上傳成功返回下載URL json格式返回 只想文件上傳服務(wù)器測試接口,以下電梯直達(dá)即可

    2024年02月11日
    瀏覽(24)
  • C/C++ 通過HTTP實(shí)現(xiàn)文件上傳下載

    C/C++ 通過HTTP實(shí)現(xiàn)文件上傳下載

    WinInet(Windows Internet)是 Microsoft Windows 操作系統(tǒng)中的一個(gè) API 集,用于提供對 Internet 相關(guān)功能的支持。它包括了一系列的函數(shù),使得 Windows 應(yīng)用程序能夠進(jìn)行網(wǎng)絡(luò)通信、處理 HTTP 請求、FTP 操作等。WinInet 提供了一套完整的網(wǎng)絡(luò)通信工具,使得開發(fā)者能夠輕松地構(gòu)建支持網(wǎng)絡(luò)功

    2024年02月19日
    瀏覽(27)
  • lazarus、delphi文件Http下載斷點(diǎn)續(xù)傳的實(shí)現(xiàn)

    下載大文件時(shí),斷點(diǎn)續(xù)傳是很有必要的,特別是網(wǎng)速度慢且不穩(wěn)定的情況下,很難保證不出意外,一旦意外中斷,又要從頭下載,會(huì)很讓人抓狂。斷點(diǎn)續(xù)傳就能很好解決意外中斷情況,再次下載時(shí)不需要從頭下載,從上次中斷處繼續(xù)下載即可,這樣下載幾G或十幾G大小的一個(gè)

    2024年02月13日
    瀏覽(35)
  • 【Java實(shí)戰(zhàn)】Feign調(diào)用文件下載服務(wù)接口實(shí)現(xiàn)文件下載功能

    最近需要實(shí)現(xiàn)Feign調(diào)用服務(wù)提供者的文件下載接口,進(jìn)行文件下載功能,這里對功能的實(shí)現(xiàn)做一個(gè)簡單的記錄 通過調(diào)用服務(wù)提供者的文件下載接口,將文件傳輸?shù)牧鲾?shù)據(jù)通過 feign.Response 來接收,服務(wù)消費(fèi)者再將數(shù)據(jù)轉(zhuǎn)化 首先,在項(xiàng)目中引入Feign的依賴。你可以使用Maven進(jìn)行管

    2024年02月12日
    瀏覽(126)
  • Spring Boot實(shí)現(xiàn)HTTP大文件斷點(diǎn)續(xù)傳分片下載-大視頻分段漸進(jìn)式播放

    服務(wù)端如何將一個(gè)大視頻文件做切分,分段響應(yīng)給客戶端,讓瀏覽器可以漸進(jìn)式地播放。 Spring Boot實(shí)現(xiàn)HTTP分片下載斷點(diǎn)續(xù)傳,從而實(shí)現(xiàn)H5頁面的大視頻播放問題,實(shí)現(xiàn)漸進(jìn)式播放,每次只播放需要播放的內(nèi)容就可以了,不需要加載整個(gè)文件到內(nèi)存中。 文件的斷點(diǎn)續(xù)傳、文件多

    2024年02月14日
    瀏覽(31)
  • 關(guān)于使用Feign來實(shí)現(xiàn)微服務(wù)之間的文件下載

    在微服務(wù)當(dāng)中,不同的服務(wù)之間需要進(jìn)行通信,不乏微服務(wù)之間使用feign進(jìn)行文件的下載上傳使用場景。下邊介紹如何使用Feign來進(jìn)行微服務(wù)之間的下載excel 背景 :前兩天做的一個(gè)需求,需要專門為材積信息而新啟一個(gè)服務(wù),其他系統(tǒng)調(diào)用此服務(wù)來進(jìn)行獲取產(chǎn)品的一些材積信

    2024年02月14日
    瀏覽(22)
  • Spring-Boot實(shí)現(xiàn)HTTP大文件斷點(diǎn)續(xù)傳分片下載-大視頻分段漸進(jìn)式播放

    服務(wù)端如何將一個(gè)大視頻文件做切分,分段響應(yīng)給客戶端,讓瀏覽器可以漸進(jìn)式地播放。 Spring Boot實(shí)現(xiàn)HTTP分片下載斷點(diǎn)續(xù)傳,從而實(shí)現(xiàn)H5頁面的大視頻播放問題,實(shí)現(xiàn)漸進(jìn)式播放,每次只播放需要播放的內(nèi)容就可以了,不需要加載整個(gè)文件到內(nèi)存中。 文件的斷點(diǎn)續(xù)傳、文件多

    2024年02月11日
    瀏覽(32)
  • Vue3 - 詳細(xì)實(shí)現(xiàn)下載從服務(wù)端返回的文件流 Blob 對象教程,前端下載后端接口返回的文件流并自動(dòng)保存到本地,支持任何格式的文件下載(從后端拿到二進(jìn)制文件流 Blob 對象,前端實(shí)現(xiàn)點(diǎn)擊下載功能)

    Vue3 - 詳細(xì)實(shí)現(xiàn)下載從服務(wù)端返回的文件流 Blob 對象教程,前端下載后端接口返回的文件流并自動(dòng)保存到本地,支持任何格式的文件下載(從后端拿到二進(jìn)制文件流 Blob 對象,前端實(shí)現(xiàn)點(diǎn)擊下載功能)

    調(diào)用服務(wù)端(后端)接口拿到文件流,通過前端下載并保存到本地。 本文 實(shí)現(xiàn)了在 vue3 項(xiàng)目中,通過后端接口返回的二進(jìn)制文件流 Blob 對象,在前端進(jìn)行點(diǎn)擊下載并保存到用戶本地,任何格式的文件都可以輕松下載, 保證您直接復(fù)制代碼,改個(gè)請求地址就可以使用了, 如下

    2024年02月04日
    瀏覽(174)
  • 【前端面試】中大文件上傳/下載:中等文件代理服務(wù)器放行+大文件切片傳輸+并發(fā)請求+localstorage實(shí)現(xiàn)斷點(diǎn)續(xù)傳

    【前端面試】中大文件上傳/下載:中等文件代理服務(wù)器放行+大文件切片傳輸+并發(fā)請求+localstorage實(shí)現(xiàn)斷點(diǎn)續(xù)傳

    目錄 切片上傳~spark-md5 原理:流式計(jì)算+分塊處理 文件標(biāo)識(shí)spark-md5:A-B A.切片哈希值合并 B.首尾切片+其他切片前中后各取2M 計(jì)算hash:A-B(參考React的Fiber架構(gòu)) A.線程:web-worker B.空閑:requestIdleCallback 異步并發(fā)控制:A-B(參考http2的多路復(fù)用) A.promise.allSettled() B.并發(fā)數(shù)max=

    2024年02月12日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包