nodejs melaksanakan muat turun fail http

王林
Lepaskan: 2023-05-27 17:48:38
asal
1293 orang telah melayarinya

Node.js ialah sumber terbuka, persekitaran masa jalan JavaScript merentas platform yang membenarkan kod JavaScript dijalankan pada pelayan. Dalam Node.js, kami boleh mencipta pelayan http ringkas dengan mudah melalui modul http, dan merealisasikan fungsi muat turun fail dengan membaca fail tempatan. Artikel ini akan memperkenalkan cara menggunakan Node.js untuk melaksanakan muat turun fail http.

  1. Buat pelayan http

Menggunakan modul http Node.js, anda boleh mencipta pelayan http dengan mudah Kodnya adalah seperti berikut:

const http = require('http');

const server = http.createServer((req, res) => {
  console.log('Request received');
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});
Salin selepas log masuk

Kod ini mencipta pelayan http Dicipta yang mendengar permintaan pada port 3000. Apabila pelayan menerima sebarang permintaan, 'Permintaan diterima' adalah output pada konsol.

  1. Mengendalikan permintaan http

Untuk melaksanakan fungsi muat turun fail, kita perlu mendapatkan URL yang diminta dalam pengendali permintaan dan menentukan fail yang akan dimuat turun berdasarkan yang diminta dokumen URL. Kodnya adalah seperti berikut:

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
  console.log('Request received');

  const fileUrl = req.url.slice(1);
  const filePath = `./${fileUrl}`;

  fs.stat(filePath, (err, stats) => {
    if (err) {
      res.statusCode = 404;
      res.end('File not found');
      return;
    }

    fs.readFile(filePath, (err, data) => {
      if (err) {
        res.statusCode = 500;
        res.end('Error reading file');
        return;
      }

      res.setHeader('Content-Disposition', `attachment; filename=${fileUrl}`);
      res.setHeader('Content-Type', 'application/octet-stream');
      res.setHeader('Content-Length', stats.size);
      res.end(data);
    });
  });
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});
Salin selepas log masuk

Dalam kod ini, kami mendapat nama fail daripada URL yang diminta dan menentukan laluan fail berdasarkan nama fail. Seterusnya, kami menggunakan kaedah stat modul fs untuk menyemak sama ada fail itu wujud. Jika fail tidak wujud, kami menghantar respons 404 kepada klien dan mengembalikan mesej 'Fail tidak ditemui'. Jika fail wujud tetapi ralat berlaku semasa membaca kandungan fail, kami menghantar 500 respons kepada klien dan mengembalikan mesej 'Ralat membaca fail'. Jika semuanya baik-baik saja, kami menetapkan pengepala respons dan menghantar kandungan fail kepada klien.

  1. Uji fungsi muat turun

Kita boleh masukkan 'http://localhost:3000/file.txt' dalam penyemak imbas, tempat file.txt hendak dimuat turun nama fail. Jika fail itu wujud, pelayan akan memuat turunnya.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara untuk melaksanakan muat turun fail http melalui Node.js. Kami mencipta pelayan http untuk mengendalikan permintaan pelanggan dan membaca fail tempatan melalui modul fs dan menghantarnya kepada klien sebagai kandungan respons. Contoh ini menyediakan cara yang sangat mudah untuk menyediakan fungsi muat turun fail kepada pelanggan, tetapi dalam amalan, kami mungkin ingin mempertimbangkan untuk melaksanakan pengurusan muat turun yang lebih praktikal, seperti had saiz fail, had kelajuan muat turun dan pengesahan bahawa fail adalah fail yang sah .

Atas ialah kandungan terperinci nodejs melaksanakan muat turun fail http. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan