2017-10-29 2 views
0

Ich habe Probleme mit multer, um ein Foto in einem Ordner zu speichern. Der Pfad der Datei würde nach mlab hochgeladen (funktioniert gut), aber es soll das Bild aus dem Ordner holen, aus dem ich es holen möchte, das gerade nicht speichert. Wenn Sie versuchen, es aus der Ansicht zu betrachten, wird ein 404-Fehler ausgelöst, da das Bild nicht im Ordner vorhanden ist. Hier ist mein serverseitiger Controller:Wie können Sie die Datei in einem Ordner speichern?

var multer = require('multer'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, './modules/articles/client/img/'); // where to store it 
    }, 
    filename: function (req, file, cb) { 
    if(!file.originalname.match(/\.(png|jpg|jpeg|pdf|gif)$/)) { 
     var err = new Error(); 
     err.code = 'filetype'; // to check on file type 
     return cb(err); 
    } else { 
     var day = new Date(); 
     var d = day.getDay(); 
     var h = day.getHours(); 
     var fileNamee = d + '_' + h + '_' + file.originalname; 
     console.log("filename produced is: " + fileNamee); 
     cb(null, fileNamee); 
    } 
    } 
}); 

var upload = multer({ 
    storage: storage, 
    limits: { fileSize: 20971520 } // Max file size: 20MB 
}).single('myfile'); // name in form 

exports.uploads = function (req, res) { 
    upload(req, res, function (err) { 
    if (err) { 
     if (err.code === 'LIMIT_FILE_SIZE') { 
     res.json({ success: false, message: 'File size is too large. Max limit is 20MB' }); 
     } else if (err.code === 'filetype') { 
     res.json({ success: false, message: 'File type is invalid. Accepted types are .png/.jpg/.jpeg/.pdf' }); 
     } else { 
     console.log('err = ' + err); 
     res.json({ success: false, message: 'File was not able to be uploaded' }); 
     } 
    } else { 
     if (!req.file) { 
     var article = new Article(req.body); 
     article.user = req.user; 

     article.save(function (err) { 
      if (err) { 
      return res.status(400).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
      } else { 
      res.jsonp(article); 
      } 
     }); 
     } 
     else if (req.file) { 
     res.json({ success: true, message: 'File was uploaded!' }); 
     } 

    } 
    // Everything went fine 
    }); 
}; 

Antwort

0

Der Code funktioniert einwandfrei. Überprüfen Sie Ihre Ordnerberechtigungen. Stellen Sie sicher, dass der Server in den Ordner schreiben kann.

+0

Tut mir leid, ich bin ein wenig neu zu arbeiten mit MeanJS und Client-Server-Arbeit, aber der IMG-Ordner hat chmod 755, während der serverseitige Controller hat chmod 644 (-RW-r-r--). Ich werde sagen, dass wenn ich print-Anweisungen in der Mitte der exports.upload-Funktionen und der Dateiname-Funktion ausspreche, nichts ausgibt. Muss es etwas tun, wenn man nicht angerufen wird? – Andrei

Verwandte Themen