2015-01-16 4 views
1
<form action="http://localhost:3000/examples" method="post" enctype="multipart/form-data" accept="application/json"> 
    <input type="text" name ="name"> 
    <input type="text" name ="codedescription"> 
    <input type="file" name ="file"> 
    <input type="submit" value="Upload selected file to server"> 
</form> 

var multer = require('multer'); 
    app.use(multer({ dest: './uploads/', 
     onFileUploadStart : function(file){ 
      console.log('File recieved:'); 
      console.log(file); 
     }, 
     onFileUploadData:function (file,data){ 
      console.log('Data recieved'); 
     }, 
     onParseEnd: function(req,next){ 
      next(); 
     } 
    })); 
app.route('/examples').post(users.requiresLogin, examples.create); 

exports.create = function(req, res) { 
     console.log("req.files"+req.files); 
     console.log("req.name"+req.body.name); 
     console.log("req.codedescription"+req.body.codedescription); 
    }; 

Отправить форму без enctype = "multipart/form-data" работает, но я не могу получить файлы.node.js многофайловая загрузка не работает

Отправить форму с enctype = "multipart/form-data" работает, но я не могу получить файлы, а также данные.

+0

вы могли исправить проблему. Даже im сталкивается с той же проблемой –

+0

Ссылка на этот новый способ использования multer. https://stackoverflow.com/questions/32045027/multer-callbacks-not-working – gaurav

ответ

1

вы можете попробовать это

<html> 
<head> 
<title>FileUpload</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
<form id  = "uploadForm" 
    enctype = "multipart/form-data" 
    action = "http://localhost:3000/api/photo" 
    method = "post" 
> 
<input type="file" name="userPhoto" multiple /> 
<input type="submit" value="Upload Image" name="submit" id="btnUpload"> 
<span id="spnStatus" /> 
</form> 

<script> 
     $(document).ready(function(){ 
      $('#btnUpload').click(function(){ 
       $('#spnStatus').empty().text("File is Uploading"); 
       $(this).ajaxSubmit({ 
       error : function(xhr){ 
        status('Error : '+xhr.status); 
        } 

       success : function(response){ 
        $('#spnStatus').empty().text(xhr); 
        } 
       }); 
      }); 

     }); 
    </script> 
</body> 
</html> 

NodeJS Экспресс

var express = require("../node_modules/express"); 
var multer = require('../node_modules/multer'); 
var bodyParser = require("../node_modules/body-parser"); 
var app = express(); 
app.use(bodyParser.json()); 


var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './uploads'); 
    }, 
    filename: function (req, file, callback) { 
    callback(null, file.fieldname + '-' + Date.now()); 
    } 
}); 
var upload = multer({ storage : storage }).array('userPhoto',8); 

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

app.post('/api/photo',function(req,res){ 

      upload(req,res,function(err) { 
      if(err) { 
       console.log(err); 
       return res.end("Error uploading file."); 
      } 
      res.end("File is uploaded"); 
     }); 
}); 

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

Теперь вы можете загрузить ДО 8 файлов за один раз, если вы хотите загрузить больше восьми, просто редактировать var upload = multer({ storage : storage }).array('userPhoto','LIMITHERE');

 Смежные вопросы

  • Нет связанных вопросов^_^