UNPKG

@dabapps/django-s3-file-upload

Version:

Upload files from the browser to S3 - client side implementation

81 lines 2.38 kB
"use strict"; 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