@churchapps/apphelper
Version:
Library of helper functions for React and NextJS ChurchApps
32 lines (26 loc) • 1.14 kB
text/typescript
import axios from "axios";
export class FileHelper {
static postPresignedFile = (presigned: any, uploadedFile: File, progressCallback: (percent: number) => void) => {
const formData = new FormData();
//formData.append("key", presigned.key); //no longer needed with new aws sdk
formData.append("acl", "public-read");
formData.append("Content-Type", uploadedFile.type);
for (const property in presigned.fields) formData.append(property, presigned.fields[property]);
formData.append("file", uploadedFile);
const axiosConfig = {
headers: { "Content-Type": "multipart/form-data" },
onUploadProgress: (data: any) => {
progressCallback(Math.round((100 * data.loaded) / data.total));
}
};
return axios.post(presigned.url, formData, axiosConfig);
};
static dataURLtoBlob(dataurl: string) {
let arr = dataurl.split(","), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
}
}