@dabapps/django-s3-file-upload
Version:
Upload files from the browser to S3 - client side implementation
81 lines • 2.38 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var axios_1 = require("axios");
var Cookies = require("js-cookie");
var constants_1 = require("./constants");
exports.configureFormData = function (data) {
var formData = new FormData();
Object.keys(data).forEach(function (key) {
formData.append(key, data[key]);
});
return formData;
};
exports.completeFileUpload = function (data) {
return axios_1.default
.request({
method: constants_1.POST,
url: data.complete_url,
headers: {
'X-CSRFToken': Cookies.get('csrftoken'),
},
})
.then(function () {
return data;
});
};
exports.uploadFileToSignedUrl = function (uploadData, file) {
var uploadForm = uploadData.upload_form;
var data = __assign({}, uploadForm.fields, { file: file });
return axios_1.default
.request({
method: constants_1.POST,
url: uploadForm.url,
data: exports.configureFormData(data),
headers: {
'Content-Type': 'multipart/form-data',
},
})
.then(function () {
return exports.completeFileUpload(uploadData);
});
};
var isFile = function (file) {
return file && !('acl' in file);
};
exports.getUploadForm = function (file) {
var data = isFile(file)
? {
filename: file.name,
}
: {
acl: file.acl,
filename: file.file.name,
};
return axios_1.default
.request({
method: constants_1.POST,
url: '/api/s3-file-uploads/',
headers: {
'X-CSRFToken': Cookies.get('csrftoken'),
},
data: data,
})
.then(function (uploadResponse) {
return exports.uploadFileToSignedUrl(uploadResponse.data, isFile(file) ? file : file.file);
});
};
exports.uploadFileToS3 = function (file) {
return exports.getUploadForm(file);
};
//# sourceMappingURL=upload-file-to-s3.js.map