खोज…


मुलर का उपयोग करके सिंगल फाइल अपलोड

स्मरण में रखना

  • अपलोड के लिए फ़ोल्डर बनाएँ (उदाहरण में uploads )।
  • multer npm npm i -S multer स्थापित करें

server.js :

var express =   require("express");
var multer  =   require('multer');
var app         =   express();
var fs = require('fs');

app.get('/',function(req,res){
      res.sendFile(__dirname + "/index.html");
});

var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    fs.mkdir('./uploads', function(err) {
        if(err) {
            console.log(err.stack)
        } else {
            callback(null, './uploads');
        }
    })
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});

app.post('/api/file',function(req,res){
    var upload = multer({ storage : storage}).single('userFile');
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
});

app.listen(3000,function(){
    console.log("Working on port 3000");
});

index.html :

<form id        =  "uploadForm"
     enctype   =  "multipart/form-data"
     action    =  "/api/file"
     method    =  "post"
>
<input type="file" name="userFile" />
<input type="submit" value="Upload File" name="submit">
</form>

ध्यान दें:

एक्सटेंशन के साथ फाइल अपलोड करने के लिए आप Node.js पाथ -इन लाइब्रेरी का उपयोग कर सकते हैं

इसके लिए बस server.js फ़ाइल के लिए path आवश्यकता होती path :

var path = require('path');

और परिवर्तन:

callback(null, file.fieldname + '-' + Date.now());

निम्नलिखित तरीके से फ़ाइल एक्सटेंशन जोड़ना:

callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));

एक्सटेंशन द्वारा अपलोड कैसे फ़िल्टर करें:

इस उदाहरण में, केवल कुछ एक्सटेंशन की अनुमति देने के लिए फ़ाइलों को अपलोड करने का तरीका देखें।

उदाहरण के लिए केवल चित्र एक्सटेंशन। बस var upload = multer({ storage : storage}).single('userFile'); fileFilter स्थिति

var upload = multer({
    storage: storage,
    fileFilter: function (req, file, callback) {
        var ext = path.extname(file.originalname);
        if(ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
            return callback(new Error('Only images are allowed'))
        }
        callback(null, true)
    }
}).single('userFile');

अब आप केवल छवि फ़ाइलों को png , jpg , gif या jpeg एक्सटेंशन के साथ अपलोड कर सकते हैं

दुर्जेय मॉड्यूल का उपयोग करना

मॉड्यूल स्थापित करें और डॉक्स पढ़ें

npm i formidable@latest

8080 पोर्ट पर सर्वर का उदाहरण

var formidable = require('formidable'),
    http = require('http'),
    util = require('util');

http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    // parse a file upload
    var form = new formidable.IncomingForm();

    form.parse(req, function(err, fields, files) {
      if (err)
          do-smth; // process error

      // Copy file from temporary place
      // var fs = require('fs');
      // fs.rename(file.path, <targetPath>, function (err) { ... });         

      // Send result on client
      res.writeHead(200, {'content-type': 'text/plain'});
      res.write('received upload:\n\n');
      res.end(util.inspect({fields: fields, files: files}));
    });

    return;
  }

  // show a file upload form
  res.writeHead(200, {'content-type': 'text/html'});
  res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+
    '<input type="text" name="title"><br>'+
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
}).listen(8080);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow