import { useState } from "react"; import {Box, ButtonBase, useTheme, Typography, SxProps, Theme} from "@mui/material"; import UploadIcon from "../../assets/icons/UploadIcon"; import { SnackbarProvider, enqueueSnackbar } from 'notistack'; import Resizer from "react-image-file-resizer"; import JSZip from "jszip" import saveAs from "file-saver" interface Props { text?: string; sx?: SxProps; heightImg: string; widthImg?: string } export default ({text, sx, heightImg, widthImg}: Props) => { const theme = useTheme(); const callback = async (uri:any) => { const zip = new JSZip();//создание зип архива const idx = uri.indexOf('base64,') + 'base64,'.length; //обработка строки картинки const content = uri.substring(idx); //обработка строки картинки zip.file("fav.jpg", content, {base64: true}); //сохранение картинки в архив с именем "fav.jpg" zip.generateAsync({type:"blob"}).then(function(content) { // скачивание архива saveAs(content, "fav.zip"); // скачивание архива }); // скачивание архива }; const resizeImage = (imageFile:any) => { console.log(imageFile[0]) try { Resizer.imageFileResizer( imageFile[0], 150, 150, "jpg", 100, 0, callback, ); } catch (err) { console.log(err); } } const imgHC = (imgInp:any) => { const [file] = imgInp.files if (file.size < 5242880) { setData(URL.createObjectURL(file)) } else {enqueueSnackbar('Размер картинки слишком велик')} resizeImage(imgInp.files) } const [data, setData] = useState("") const [ready, setReady] = useState(false); const dragenterHC = () => { // console.log("onDragEnter") setReady(true) } const dragexitHC = () => { // console.log("onDragExit") setReady(false) } const dropHC = (event: any) => { event.preventDefault() // console.log("onDrop") setReady(false) const file = event.dataTransfer.files[0] console.log(event.dataTransfer.files[0]) if (file.size < 5242880) { setData(URL.createObjectURL(file)) } else {enqueueSnackbar('Размер картинки слишком велик')} // try { // Resizer.imageFileResizer( // file, // 50, // 50, // "JPEG", // 100, // 0, // callback, // ); // // } catch (err) { // console.log(err); // } // } const dragOverHC = (event: any) => { event.preventDefault() // console.log("onDragOver") } return ( imgHC(event.target)} hidden accept="image/*" multiple type="file" /> {text} {data ? : null } ) }