Без base64, загрузка на комп
1) ⚡Загрузка на тестовом сервере. Может принимать лишь один запрос
import React, { ChangeEvent, useState } from 'react';
import { IconButton } from '@mui/material';
import CloudUploadIcon from '@mui/icons-material/CloudUpload';
import defaultAva from '../assets/defaultAva.png'
import axios from 'axios';
export const InputTypeFile = () => {
const [ava, setAva] = useState(defaultAva)
const [isAvaBroken, setIsAvaBroken] = useState(false)
const uploadHandler = (e: ChangeEvent<HTMLInputElement>) => {
if (e.target.files && e.target.files.length) {
const file = e.target.files[0]
if (file.size < 4000000) {
postAvatar(file)
} else {
alert('Файл слишком большого размера')
}
}
}
const postAvatar = (file: File) => {
const formData = new FormData();
formData.append('myFile', file);
axios.post('https://neko-back.herokuapp.com/file', formData)
.then((res) => {
console.log('response: ', res.data)
})
}
const errorHandler = () => {
setIsAvaBroken(true)
alert('Кривая картинка')
}
return (
<div>
<img
src={isAvaBroken ? defaultAva : ava}
style={{width: '100px'}}
onError={errorHandler}
alt="ava"
/>
<label>
<input type="file"
onChange={uploadHandler}
style={{display: 'none'}}
/>
<IconButton component="span">
<CloudUploadIcon/>
</IconButton>
</label>
</div>
)
}
2) ⚡Получение данных
3) ⚡Сохранение файла на компьютере
Last updated