Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs melaksanakan nama muat naik fail

Nodejs melaksanakan nama muat naik fail

WBOY
WBOYasal
2023-05-28 13:29:41782semak imbas

Had saiz dan saiz

Dengan pembangunan berterusan Internet, muat naik fail telah menjadi salah satu fungsi yang diperlukan bagi banyak laman web. Dalam Node.js, muat naik fail boleh dilaksanakan menggunakan pelbagai modul dan teknologi. Di bawah, kami akan memperkenalkan kaedah muat naik fail berdasarkan rangka kerja Express dan membincangkan cara melaksanakan sekatan saiz dan nama pada muat naik fail.

  1. Pasang modul bergantung

Dalam artikel ini kami akan menggunakan rangka kerja Express sebagai pelayan web dan menggunakan modul multer untuk mengendalikan muat naik fail. Mari pasang modul bergantung ini dahulu:

npm install express multer --save
  1. Penggunaan asas muat naik fail

Berikut ialah contoh laluan muat naik fail asas:

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

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

app.post('/upload', upload.single('file'), function(req, res) {
    res.send('文件上传成功!');
});

app.listen(3000, function() {
    console.log('服务器已启动,端口号:3000');
});

Dalam kod di atas, kami menggunakan kaedah upload.single multer untuk mengendalikan muat naik fail dan atribut nama bagi satu fail mestilah file. Selepas muat naik berjaya, pelayan mengembalikan rentetan.

  1. Had saiz fail

Sekarang mari kita laksanakan had saiz fail Kita boleh melakukannya dengan menyatakan atribut limits dalam konfigurasi multer. Contohnya adalah seperti berikut:

const upload = multer({
  dest: 'uploads/',
  limits: {
    fileSize: 1024 * 1024 //限制1M
  }
});

Dalam contoh di atas, kami menetapkan saiz maksimum fail yang dimuat naik kepada 1M (unit ialah bait). Jika saiz fail yang dimuat naik melebihi nilai ini, multer akan mengembalikan ralat secara automatik. Kami boleh menyemak ralat dalam fungsi panggil balik laluan dengan menentukan sama ada req.file wujud. Contohnya adalah seperti berikut:

app.post('/upload', upload.single('file'), function(req, res) {

    // 文件大小超出限制
    if (req.file.size > 1024 * 1024) {
        return res.status(400).send('文件大小不能超过1M');
    }

    res.send('文件上传成功!');
});

Dalam contoh di atas, jika saiz fail melebihi 1M, kod ralat 400 dan mesej ralat akan dikembalikan.

  1. Sekatan nama fail

Jika kami ingin mengehadkan nama fail yang dimuat naik, kami boleh menggunakan kaedah fileFilter multer untuk mencapainya. Dalam kaedah fileFilter, kita boleh menilai nama fail yang dimuat naik Jika syarat dipenuhi, teruskan muat naik, jika tidak ralat akan dilemparkan. Contohnya adalah seperti berikut:

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, './uploads')
    },
    filename: function(req, file, cb) {
        // 只允许上传后缀名为jpg, jpeg和png的文件
        if (!/.(jpg|jpeg|png)$/.test(file.originalname)) {
            return cb(new Error('只能上传jpg, jpeg和png格式的图片'));
        }

        //自定义文件名称
        let timestamp = Date.now();
        cb(null, timestamp + '.' + file.originalname.split('.').pop());
    }
});

const upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 //限制1M
    },
    fileFilter: function(req, file, cb) {
        // 检查文件类型
        if (!file.originalname.match(/.(jpg|jpeg|png)$/)) {
            return cb(new Error('只能上传jpg, jpeg和png格式的图片'));
        }

        // 继续上传
        cb(null, true);
    }
});

app.post('/upload', upload.single('file'), function(req, res) {
    res.send('文件上传成功!');
});

Dalam contoh di atas, kami menambahkan kaedah filename untuk menilai dan mengubah suai nama fail sebelum memuat naiknya. Selain itu, kami juga menggunakan kaedah fileFilter untuk menentukan sama ada nama fail memenuhi keperluan Jika tidak, ralat akan dilemparkan.

  1. Ringkasan

Melalui contoh di atas, kami belajar menggunakan modul Express dan multifungsi untuk melaksanakan muat naik fail serta sekatan saiz dan nama. Saya percaya pembaca boleh mengaplikasikannya secara fleksibel dalam pembangunan sebenar. Perlu diingat bahawa kami harus melaksanakan semakan dan sekatan keselamatan yang lebih ketat pada muat naik fail dalam persekitaran pengeluaran.

Atas ialah kandungan terperinci Nodejs melaksanakan nama muat naik fail. 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