Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs melaksanakan muat naik folder

Nodejs melaksanakan muat naik folder

WBOY
WBOYasal
2023-05-25 17:43:37886semak imbas

Kata Pengantar

Dalam pembangunan web, muat naik fail adalah keperluan yang sangat biasa, dan kebanyakan aplikasi web mempunyai fungsi memuat naik fail. Dalam sesetengah senario, jika anda perlu memuat naik keseluruhan folder dan bukannya satu fail, anda perlu menggunakan beberapa kaedah khas. Artikel ini akan memperkenalkan cara menggunakan Node.js untuk melaksanakan fungsi memuat naik folder.

Langkah pelaksanaan

  1. Buat borang

Langkah pertama untuk memuat naik fail ialah mencipta borang HTML yang mengandungi fail yang dimuat naik. Oleh kerana memuat naik folder memerlukan memuat naik berbilang fail, kami perlu menggunakan kotak input teks berbilang baris untuk membolehkan pengguna memilih folder yang perlu dimuat naik. Berikut ialah contoh kod borang HTML:

<form action="/uploadFolder" method="POST" enctype="multipart/form-data">
    <input type="file" name="folder[]" multiple webkitdirectory directory>
    <input type="submit" value="上传">
</form>

Dalam kod di atas, kami menggunakan kotak input teks berbilang baris untuk membolehkan pengguna memilih folder untuk dimuat naik dan menggunakan name="folder[]" untuk menentukan nama elemen borang untuk memudahkan pemprosesan seterusnya beberapa dokumen.

  1. Buat laluan

Untuk aplikasi Express, kami perlu mewujudkan pengendali laluan baharu untuk folder muat naik. Dalam pengendali laluan ini, kita perlu menggunakan perpustakaan khusus untuk menghuraikan dan memproses data borang. Khususnya, kami menggunakan pustaka multer untuk mengendalikan folder yang dimuat naik. Berikut ialah contoh kod menggunakan pustaka multer:

const express = require("express");
const multer = require("multer");

const app = express();
const upload = multer({ dest: "uploads/" });

app.post("/uploadFolder", upload.any(), (req, res) => {
    console.log(req.files);
    res.send("上传成功");
});

app.listen(3000, () => {
    console.log("应用程序已启动");
});

Dalam kod di atas, kami menggunakan pustaka multer untuk memproses data borang dan menyimpan semua fail yang dimuat naik ke direktori uploads/ pada pelayan . Pustaka termasuk fungsi middleware di mana upload.any() menyatakan bahawa sebarang jenis fail dibenarkan untuk dimuat naik. Dalam pengendali laluan, kita boleh menggunakan objek req.files untuk mengakses semua fail dalam folder yang dimuat naik.

  1. Mengendalikan Fail Yang Dimuat Naik

Kami boleh menggunakan modul terbina dalam Node.js untuk memproses fail yang dimuat naik. Khususnya, kita perlu menggunakan fungsi berkaitan modul fs untuk menyelesaikan tugasan. Berikut ialah kod sampel:

const fs = require("fs");

const files = req.files;
for (let i = 0; i < files.length; i++) {
    const file = files[i];
    const filePath = file.path;
    const originalName = file.originalname;
    const fileName = originalName.replace(/[^a-z0-9]/gi, "_").toLowerCase();
    const destPath = "uploads/" + fileName;
    try {
        fs.renameSync(filePath, destPath);
    } catch (err) {
        res.status(500).send('文件上传失败');
    }
}
res.send("上传成功");

Dalam kod di atas, kita mula-mula menggelungkan semua fail dalam objek req.files, dan kemudian menggunakan fungsi fs modul renameSync() untuk mengalihkan setiap fail ke yang dinyatakan dalam direktori. Sebelum memindahkan fail, kita perlu menjana nama fail baharu dengan menggantikan aksara khas dalam nama fail. Jika ralat berlaku semasa memindahkan fail, mesej ralat akan dikembalikan dalam respons.

  1. Kod Penuh

Anda boleh melihat kod sampel lengkap di sini. Oleh itu, kami boleh melancarkan aplikasi menggunakan arahan berikut:

node app.js

Kesimpulan

Memuat naik keseluruhan folder ialah ciri yang sangat berguna yang membantu pengguna mengatur dan Mengurus fail dengan lebih baik. Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan Node.js untuk melaksanakan fungsi memuat naik folder. Semoga artikel ini bermanfaat kepada pembaca.

Atas ialah kandungan terperinci Nodejs melaksanakan muat naik folder. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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