I'm having trouble downloading a file with nodeJS and Angular.
I found solutions, but this is only with Ajax, which I do not know about. Is it possible to do without?
With the following code, I get this error:
POST http://localhost:2000/database/sounds 413 (Payload Too Large)
code:
HTML:
<div class="form-group"> <label for="upload-input">This needs to be a .WAV file</label> <form enctype="multipart/form-data" action="/database/sounds" method="post"> <input type="file" class="form-control" name="uploads[]" id="upload-input" multiple="multiple"> </form> <button class="btn-primary" ng-click="uploadSound()">UPLOAD</button> </div>
JavaScript:
$scope.uploadSound = function(){ var x = document.getElementById("upload-input"); if ('files' in x) { if (x.files.length == 0) { console.log("Select one or more files."); } else { var formData = new FormData(); for (var i = 0; i < x.files.length; i++) { var file = x.files[i]; if(file.type==("audio/wav")){ console.log("Importing :"); if ('name' in file) { console.log("-name: " + file.name); } if ('size' in file) { console.log("-size: " + file.size + " bytes"); } formData.append('uploads[]', file, file.name); }else{ console.log("Error with: '"+file.name+"': the type '"+file.type+"' is not supported."); } } $http.post('/database/sounds', formData).then(function(response){ console.log("Upload :"); console.log(response.data); }); } } }
NodeJS:
//Upload a sound app.post('/database/sounds', function(req, res){ var form = new formidable.IncomingForm(); // specify that we want to allow the user to upload multiple files in a single request form.multiples = true; // store all uploads in the /uploads directory form.uploadDir = path.join(__dirname, '/database/sounds'); // every time a file has been uploaded successfully, // rename it to it orignal name form.on('file', function(field, file) { fs.rename(file.path, path.join(form.uploadDir, file.name)); }); // log any errors that occur form.on('error', function(err) { console.log('An error has occured: \n' + err); }); // once all the files have been uploaded, send a response to the client form.on('end', function() { res.end('success'); }); // parse the incoming request containing the form data form.parse(req); });
EDIT:
The error has become
POST http://localhost:2000/database/sounds 400 (Bad Request)
source share