2012-11-01 12 views
8

Przesyłam plik obrazu ze strony klienta przy użyciu wieloczęściowych danych formularzy. Chcę odebrać i zapisać go jako plik po stronie serwera za pomocą node.js.sposób obsługi danych wieloczęściowych/formularzy w pliku node.js

<html> 
    <body> 
     <form action="url" method="post" enctype="multipart/form-data"> 
      <input type="text" name="imageName"> 
      <input type="file" name="sam"> 
     </form> 
    </body> 
</html> 

To jest mój kod po stronie klienta. Jak obsługiwać ten plik po stronie serwera.

Odpowiedz

2

To ponawiane pytanie poniżej linku.

Uploading images using Node.js, Express, and Mongoose

Oto przykład:

// Expose modules in ./support for demo purposes 
require.paths.unshift(__dirname + '/../../support'); 

/** 
* Module dependencies. 
*/ 

var express = require('../../lib/express') 
    , form = require('connect-form'); 

var app = express.createServer(
    // connect-form (http://github.com/visionmedia/connect-form) 
    // middleware uses the formidable middleware to parse urlencoded 
    // and multipart form data 
    form({ keepExtensions: true }) 
); 

app.get('/', function(req, res){ 
    res.send('<form method="post" enctype="multipart/form-data">' 
    + '<p>Image: <input type="file" name="image" /></p>' 
    + '<p><input type="submit" value="Upload" /></p>' 
    + '</form>'); 
}); 

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

    // connect-form adds the req.form object 
    // we can (optionally) define onComplete, passing 
    // the exception (if any) fields parsed, and files parsed 
    req.form.complete(function(err, fields, files){ 
    if (err) { 
     next(err); 
    } else { 
     console.log('\nuploaded %s to %s' 
     , files.image.filename 
     , files.image.path); 
     res.redirect('back'); 
    } 
    }); 

    // We can add listeners for several form 
    // events such as "progress" 
    req.form.on('progress', function(bytesReceived, bytesExpected){ 
    var percent = (bytesReceived/bytesExpected * 100) | 0; 
    process.stdout.write('Uploading: %' + percent + '\r'); 
    }); 
}); 

app.listen(3000); 
console.log('Express app started on port 3000'); 

Jeśli Twoje pytanie nie jest rozwiązać to proszę odwiedzić this link. To jest fajny artykuł na temat przesyłania plików.

-3

Można użyć modułu żądania do wysłania żądania wieloczęściowego. Oto przykładowy kod:

var jsonUpload = { }; 
var formData = { 
    'file': fs.createReadStream(fileName), 
    'jsonUpload': JSON.stringify(jsonUpload) 
}; 
var uploadOptions = { 
    "url": "https://upload/url", 
    "method": "POST", 
    "headers": { 
     "Authorization": "Bearer " + accessToken 
    }, 
    "formData": formData 
} 
var req = request(uploadOptions, function(err, resp, body) { 
    if (err) { 
     console.log('Error ', err); 
    } else { 
     console.log('upload successful', body) 
    } 
}); 
+0

Chce * obsługiwać dane, a nie wysyłać. –

Powiązane problemy