2017-07-06 30 views
0

Multer中的文件名問題

我使用express.js和multer將圖像上傳到服務器。我的行爲是這樣的:重命名上傳的文件nodejs和multer

var storage = multer.diskStorage({ 
     destination: function (req, file, callback) { 
      callback(null, "../client/member/upload"); 
     }, 
     filename: function (req, file, callback) { 
      console.log('1', 1); 
      callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); 
     } 
    }); 
    var upload = multer({ storage : storage}).single('userPhoto'); 

但問題是,從來沒有文件名稱的變化。 我的上傳處理程序:

function memberUpload(request, response) { 

    var storage = multer.diskStorage({ 
     destination: function (req, file, callback) { 
      callback(null, "../client/member/upload"); 
     }, 
     filename: function (req, file, callback) { 
      console.log('1', 1); 
      callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); 
     } 
    }); 
    var upload = multer({ storage : storage}).single('userPhoto'); 

    var folderName = path.join(__dirname, '../', 'client/member/upload'); 

    if (!fs.existsSync(folderName)) { 
     fs.mkdir(folderName, function (err) { 
      if (err) { 
       return response.status(500).send(err); 
      } 
      else { 
       upload(request, response, function (err) { 
        if (err) { 
         return response.status(400) 
          .send('No files were uploaded.'); 
        } 
        var sentFile = request.files.file, 
         fileName = (request.files.file && request.files.file.name) ? request.files.file.name : 'test'; 

        sentFile.mv(path.join(__dirname, '../', 'client/member/upload/', fileName), function (err) { 
         mime.lookup(path.join(__dirname, '../', 'client/member/upload/', fileName));   // => 'text/plain' 
         if (err) { 
          return response.status(500) 
           .send(err); 
         } 
         response.send({'location': '../member/upload/' + fileName}); 
        }); 
       }); 
      } 
     }); 
    } 
    else { 
     upload(request, response, function (err) { 
      if (err) { 
       return response.status(400) 
        .send('No files were uploaded.'); 
      } 
      var sentFile = request.files.file, 
       fileName = (request.files.file && request.files.file.name) ? request.files.file.name : 'test'; 

      sentFile.mv(path.join(__dirname, '../', 'client/member/upload/', fileName), function (err) { 
       mime.lookup(path.join(__dirname, '../', 'client/member/upload/', fileName));   // => 'text/plain' 
       if (err) { 
        return response.status(500) 
         .send(err); 
       } 
       response.send({'location': '../member/upload/' + fileName}); 
      }); 
     }); 
    } 
} 

將文件保存到正確的目錄名稱爲「blobid0.jpeg」,「blobid1.png」等等... 什麼是我的錯?

+0

輸出目的是:'''{文件: {名稱: 'blobid0.jpg', 數據:<緩衝FF FF D8 E0 00 10 4A 46 49 46 00 01 02 01 00 48 00 48 00 00 ff ed 01 b8 50 68 6f 74 6f 73 68 6f 70 20 33 2e 30 00 38 42 49 4d 03 e9 00 00 00 00 00 78 ...>, 編碼:'7bit', mimetype:'image/jpeg ', mv:[Function:mv]}}''' –

回答

0

這裏是我上傳任何文件(pdf,txt,png)到server.Hope的代碼,這將幫助你。

exports.saveMedia = ((req, res) => { 
     const storage = multer.diskStorage({ 
      destination: (req, file, callback) => { 
       callback(null, (config.const.path.base + config.const.path.productReviewMedia)); 
      }, 
      filename: (req, file, callback) => { 
       callback(null, Date.now() + '-' + file.originalname); 

      } 
     }); 

     const upload = multer({storage: storage}).any('file'); 

     upload(req, res, (err) => { 
      if (err) { 
       return res.status(400).send({ 
        message: helper.getErrorMessage(err) 
       }); 
      } 
      let results = req.files.map((file) => { 
       return { 
        mediaName: file.filename, 
        origMediaName: file.originalname, 
        mediaSource: 'http://' + req.headers.host + config.const.path.productReviewMedia + file.filename 
       } 
      }); 
      res.status(200).json(results); 
     }); 
    });