2012-11-01 6 views
8

Ich lade Image-Datei von Client-Seite mit mehrteiligen Formulardaten. Ich möchte es als Datei auf der Serverseite mit node.js empfangen und schreiben.Wie behandelt man Multipart/Form-Daten in 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> 

Dies ist mein Client-Seitencode. Wie man mit dieser Datei auf der Serverseite umgeht.

Antwort

2

Es wird die Frage unter dem Link wiederholt.

Uploading images using Node.js, Express, and Mongoose

Hier ist Beispiel:

// 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'); 

Wenn Ihre Frage zu lösen ist nicht dann bitte this link besuchen. Dies ist ein schöner Artikel zum Hochladen von Dateien.

-3

Sie können das Anforderungsmodul zum Senden einer mehrteiligen Anforderung verwenden. Hier ist der Beispielcode:

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

Er will * Handle * die Daten, nicht senden. –

Verwandte Themen