mirror of
https://github.com/tenrok/axios.git
synced 2026-05-15 11:59:42 +03:00
Automatic Content-Type for FormData uploads
When data passed to axios is of type FormData we have to let the browser
create the Content-Type header so that the boundaries will get right
etc.
Usage:
```js
var data = new FormData();
data.append('field', 'some string');
data.append('file', someFile);
var opts = {
transformRequest: function(data) { return data; }
};
axios.post('/fileupload', data, opts);
```
This commit is contained in:
@@ -21,6 +21,10 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
||||
config.headers || {}
|
||||
);
|
||||
|
||||
if (utils.isFormData(data)) {
|
||||
delete headers['Content-Type']; // Let the browser set it
|
||||
}
|
||||
|
||||
// Create the request
|
||||
var request = new(XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
|
||||
request.open(config.method, buildUrl(config.url, config.params), true);
|
||||
|
||||
@@ -22,6 +22,16 @@ function isArrayBuffer(val) {
|
||||
return toString.call(val) === '[object ArrayBuffer]';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a value is a FormData
|
||||
*
|
||||
* @param {Object} val The value to test
|
||||
* @returns {boolean} True if value is an FormData, otherwise false
|
||||
*/
|
||||
function isFormData(val) {
|
||||
return toString.call(val) === '[object FormData]';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a value is a view on an ArrayBuffer
|
||||
*
|
||||
@@ -188,6 +198,7 @@ function merge(obj1/*, obj2, obj3, ...*/) {
|
||||
module.exports = {
|
||||
isArray: isArray,
|
||||
isArrayBuffer: isArrayBuffer,
|
||||
isFormData: isFormData,
|
||||
isArrayBufferView: isArrayBufferView,
|
||||
isString: isString,
|
||||
isNumber: isNumber,
|
||||
|
||||
Reference in New Issue
Block a user