Wednesday, 31 May 2017

I need to upload custom file to nodeJS server using restify framework. I am unable to get the file at server through "Put" method using bodyparser

I am using restify plugin & XHR approach to upload file to server. Below is the client & server code.

Client: XHR is used to send file to server

var rdr= new FileReader();
rdr.onload = function (event) {
var binaryData = event.target.result;
xhr.open('PUT', fileUpload.saveUrl, true);
xhr.send(binaryData);
};

rdr.onerror = function (event) {
//...
};

reader.readAsArrayBuffer(file);

Restify Server: The call to import method is received but the file is not being received.

var restify = require('restify');
var server = restify.createServer();
server.use(restify.acceptParser(server.acceptable));
server.use(restify.bodyParser());
server.use(restify.queryParser());
server.use(restify.CORS({
  credentials: true,                 // defaults to false
  methods: ['GET', 'PUT', 'DELETE', 'POST', 'OPTIONS']
}));

server.use((request, response, next) => {

response.setHeader('Access-Control-Allow-Headers', 'Origin, Accept,     Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
response.setHeader('Access-Control-Allow-Methods', '*');
response.setHeader('Access-Control-Expose-Headers', 'X-Api-Version, X-Request-Id, X-Response-Time');
response.setHeader('Access-Control-Max-Age', '1000');
next();
});

server.use(restify.bodyParser({
maxBodySize: 0,
mapParams: true,
mapFiles: false,
overrideParams: false,
multipartHandler: function(part) {
    part.on('data', function(data) {
      /* do something with the multipart data */
    });
},

multipartFileHandler: function(part) {
    part.on('data', function(data) {
      /* do something with the multipart file data */
    });
},
keepExtensions: false,
uploadDir: './temp',
multiples: true,
hash: 'sha1'
}));

server.on('MethodNotAllowed', function (request, response, cb) {
console.log(request);
console.log(response);
});

function send(request, response, next) {
response.status(200);
return next();
}

server.put('/import', send);

server.listen(8080, function () {
console.log("Server started");
});

module.exports = server;



via Satty

No comments:

Post a Comment