1 सवाल: नोडज एक्सप्रेस सर्वर में "मुल्टरर्रर: अनपेक्षित क्षेत्र" को कैसे ठीक करें?

पर बनाया गया सवाल Thu, Mar 28, 2019 12:00 AM

मैं क्लाइंट से जिप फाइल अपलोड करने के लिए एक सर्वर स्थापित कर रहा हूं। सर्वर ऐसा करने के लिए एक्सप्रेस और मल्टर के साथ चलता है। फ़ाइल अपलोड करते समय, सर्वर "MulterError: अनपेक्षित फ़ील्ड" त्रुटि को फेंकता है और मैं समझ नहीं पा रहा हूं कि यह क्या है।

मैंने png छवियों के साथ प्रयास किया है और यह ठीक काम करता है। लेकिन ज़िप फाइलों के साथ यह काम नहीं करता है।

const multerConfig = {
    //specify diskStorage (another option is memory)
    storage: multer.diskStorage({
      //specify destination
      destination: function(req, file, next){
        next(null, './public/zip-storage');
      },

      //specify the filename to be unique
      filename: function(req, file, next){
        console.log(file);
        const ext = file.mimetype.split('/')[1];
        //set the file fieldname to a unique name containing the original name, current datetime and the extension.
        next(null, file.fieldname + '-' + Date.now() + '.'+ext);
      }
    }),

    // filter out and prevent non-image files.
    fileFilter: function(req, file, next){
          if(!file){
            next();
          }
        // only permit zip mimetypes
        const zip = file.mimetype.startsWith('application');
        if(zip){
          console.log('zip uploaded');
          next(null, true);
        }else{
          console.log("file not supported")
          errorReq = true;
          return next();
        }
    }
  };


  /* ROUTES
  **********/
  app.get('/', function(req, res){
    res.render('index.html');
  });

  var errorDetection = function(){
    if(!errorReq){
      errorReq = false;
      return('complete.html');
    } else{
      errorReq = false;
      return('errorupload.html');
    }
  }

  app.post('/upload', multer(multerConfig).single('photo'),function(req, res){
      //Here is where I could add functions to then get the url of the new photo
      //And relocate that to a cloud storage solution with a callback containing its new url
      //then ideally loading that into your database solution.   Use case - user uploading an avatar...
      res.redirect('complete.html');
  }

);

  // RUN SERVER
  app.listen(port,function(){
    console.log(`Server listening on port ${port}`);
  });

यह त्रुटि है:

MulterError: Unexpected field
    at wrappedFileFilter (/home/axentiva-miguel/Documentos/ServerAPP/node_modules/multer/index.js:40:19)
    at Busboy.<anonymous> (/home/axentiva-miguel/Documentos/ServerAPP/node_modules/multer/lib/make-middleware.js:114:7)
    at emitMany (events.js:147:13)
    at Busboy.emit (events.js:224:7)
    at Busboy.emit (/home/axentiva-miguel/Documentos/ServerAPP/node_modules/busboy/lib/main.js:38:33)
    at PartStream.<anonymous> (/home/axentiva-miguel/Documentos/ServerAPP/node_modules/busboy/lib/types/multipart.js:213:13)
    at emitOne (events.js:116:13)
    at PartStream.emit (events.js:211:7)
    at HeaderParser.<anonymous> (/home/axentiva-miguel/Documentos/ServerAPP/node_modules/dicer/lib/Dicer.js:51:16)
    at emitOne (events.js:116:13)

    
0
1 उत्तर                              1                         

ते कोड में

app.post('/upload', multer(multerConfig).single('photo'),function(req, res){
      //Here is where I could add functions to then get the url of the new photo
      //And relocate that to a cloud storage solution with a callback containing its new url
      //then ideally loading that into your database solution.   Use case - user uploading an avatar...
      res.redirect('complete.html');
  }

मैं वैल्यू सिंगल ('फोटो') डाल रहा था, जब te html फॉर्म में मैंने एक 'zip' वैल्यू डाली थी। इसमें बदलाव करते हुए कोड को अपेक्षित रूप से कार्य किया गया:     

0
2019-03-28 13: 49: 58Z
स्रोत रखा गया यहाँ