diff options
Diffstat (limited to 'node_modules/form-data/lib/form_data.js')
-rw-r--r-- | node_modules/form-data/lib/form_data.js | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/node_modules/form-data/lib/form_data.js b/node_modules/form-data/lib/form_data.js index 3a1bb82b1..9c07e32c0 100644 --- a/node_modules/form-data/lib/form_data.js +++ b/node_modules/form-data/lib/form_data.js @@ -230,7 +230,7 @@ FormData.prototype._getContentDisposition = function(value, options) { filename = path.basename(options.filename || value.name || value.path); } else if (value.readable && value.hasOwnProperty('httpVersion')) { // or try http response - filename = path.basename(value.client._httpMessage.path); + filename = path.basename(value.client._httpMessage.path || ''); } if (filename) { @@ -313,6 +313,32 @@ FormData.prototype.getBoundary = function() { return this._boundary; }; +FormData.prototype.getBuffer = function() { + var dataBuffer = new Buffer.alloc( 0 ); + var boundary = this.getBoundary(); + + // Create the form content. Add Line breaks to the end of data. + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== 'function') { + + // Add content to the buffer. + if(Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); + }else { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); + } + + // Add break after content. + if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] ); + } + } + } + + // Add the footer and return the Buffer object. + return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); +}; + FormData.prototype._generateBoundary = function() { // This generates a 50 character boundary similar to those used by Firefox. // They are optimized for boyer-moore parsing. |