Как загрузить картинку с фронтенда на сервер, используя ReactJS и ASP .NET Web api?
Имеется код на для загрузки картинки на asp web .api
PHP
|
1 |
public async Task<PluginModel> CreatePlugin(PluginModelDtO model) { var newPlugin = new PluginModel() { Title = model.Title, TitleKZ = model.TitleKZ, TitleENG = model.TitleENG, ShortInfo = model.ShortInfo, ShortInfoKZ = model.ShortInfoKZ, NameFile = UploadFile(model.ImageFile), ShortInfoENG = model.ShortInfoENG, }; await context.pluginModelModels.AddAsync(newPlugin); await context.SaveChangesAsync(); return newPlugin; } public string UploadFile(IFormFile model) { if (model.Length > 0) { try { if (!Directory.Exists(environment.WebRootPath + "\Images\")) { Directory.CreateDirectory(environment.WebRootPath + "\Images\"); } using (FileStream fileStream = System.IO.File.Create(environment.WebRootPath + "\Images\" + model.FileName)) { model.CopyTo(fileStream); fileStream.Flush(); return httpContext.HttpContext.Request.Host.Value.ToString() + "\Images\" + model.FileName; } } catch (Exception ex) { return ex.ToString(); } } else { throw new Exception("Upload Files"); } } |
Ответ от сервера таков:
Также имеется код с фронтенда (Реакт) для картинки на сервер:
Но он мне выдает ошибку: каким образом прописать на фронте код правильно, чтоб загрузился пост с картинкой?
PHP
|
1 |
const createNewPlugin = async (e) => { e.preventDefault(); const formData = new FormData(); formData.append('title', titlePlugin); formData.append('titleKZ', titlePluginKZ); formData.append('titleENG', titlePluginENG); formData.append('shortInfo', shortInfoPlugin); formData.append('shortInfoKZ', shortInfoPluginKZ); formData.append('shortInfoENG', shortInfoPluginENG); formData.append('imageFile', selectedFile); formData.append('nameFile', nameFile); // const newPlugin = { // title: titlePlugin, // titleKZ: titlePluginKZ, // titleENG: titlePluginENG, // shortInfo: shortInfoPlugin, // shortInfoKZ: shortInfoPluginKZ, // shortInfoENG: shortInfoPluginENG, // nameFile: nameFile, // }; const url = 'https://localhost:7183/createPlugin'; await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Type': 'multipart/form-data;', }, body: formData, }) .then((response) => response.json()) .then((result) => console.log(result)); navigate('/plugins'); }; return ( <div className="container"> <Form onSubmit={createNewPlugin} style={{ marginTop: 100 }}> <Form.Group className="mb-3" controlId="exampleForm.ControlInput1"> <Form.Label>Название плагина</Form.Label> <Form.Control type="file" placeholder="Загрузите картинку" readOnly onChange={handleChangeImg} accept="image/*, .png, .jpg, .gif, .web" /> </Form.Group> <hr /> <Form.Group className="mb-3" controlId="exampleForm.ControlInput1"> <Form.Label>Название плагина</Form.Label> <Form.Control type="text" placeholder="название плагина..." value={titlePlugin} onChange={(e) => setTitlePlugin(e.target.value)} /> </Form.Group> <Form.Group className="mb-3" controlId="exampleForm.ControlInput1"> <Form.Label>Название плагина(КАЗАХСКИЙ)</Form.Label> <Form.Control type="text" placeholder="название плагина...((казахский)" value={titlePluginKZ} onChange={(e) => setTitlePluginKZ(e.target.value)} /> </Form.Group> <Form.Group className="mb-3" controlId="exampleForm.ControlInput1"> <Form.Label>Название плагина(АНГЛИЙСКИЙ)</Form.Label> <Form.Control type="text" placeholder="название плагина...(английский)" value={titlePluginENG} onChange={(e) => setTitlePluginENG(e.target.value)} /> <hr /> </Form.Group> <Form.Group className="mb-3" controlId="exampleForm.ControlTextarea1"> <Form.Label>Короткая информация</Form.Label> <Form.Control as="textarea" rows={3} value={shortInfoPlugin} onChange={(e) => setShortInfoPlugin(e.target.value)} /> </Form.Group> <Form.Group className="mb-3" controlId="exampleForm.ControlTextarea1"> <Form.Label>Короткая информация(КАЗАХСКИЙ)</Form.Label> <Form.Control as="textarea" rows={3} value={shortInfoPluginKZ} onChange={(e) => setShortInfoPluginKZ(e.target.value)} /> </Form.Group> <Form.Group className="mb-3" controlId="exampleForm.ControlTextarea1"> <Form.Label>Короткая информация(АНГЛИЙСКИЙ)</Form.Label> <Form.Control as="textarea" rows={3} value={shortInfoPluginENG} onChange={(e) => setShortInfoPluginENG(e.target.value)} /> </Form.Group> <Button type="submit" variant="success"> Создать </Button>{' '} <Button onClick={() => navigate('/plugins')} variant="secondary"> Отменить </Button>{' '} </Form> </div> ); |
Ошибка:
Дополнительно:
Содержание
Ответы:
https://github.com/vkorotenko/VueRecaptcha/blob/ma...
PHP
|
1 |
var imagefile = document.getElementById("upload_files") as HTMLInputElement; if (imagefile == null) return; if (imagefile.files == null) return; const files = imagefile.files; for (let i = 0; i < files.length; i++) { formData.append("files", files[i]); } |
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Метки
1С-Битрикс (84)
AIOgram (46)
Android (94)
API (93)
C# (214)
CMS (33)
CSS (1143)
Discord (35)
Django (48)
Docker (32)
Google (482)
Google Chrome (126)
HTML (1394)
IT-образование (54)
Java (59)
JavaScript (1659)
JSON (42)
Laravel (44)
Linux (154)
MySQL (151)
Nginx (57)
Node.js (256)
PHP (1184)
PostgreSQL (80)
Python (543)
React (127)
SQL (396)
Telegram (101)
Ubuntu (44)
Unity (46)
Visual Studio Code (49)
Vue.js (52)
Windows (136)
Windows Server (38)
WordPress (52)
Битрикс24 (42)
Боты (39)
Веб-разработка (966)
Вёрстка (95)
Компьютерные сети (61)
Парсинг (33)
Поисковая оптимизация (149)
Системное администрирование (55)
Фронтенд (38)
Яндекс (53)


Для загрузки изображения с фронтенда на сервер, используя ReactJS и ASP .NET Web API, вам понадобится выполнить несколько шагов.
Шаг 1: Настройка ReactJS
Сначала вам нужно создать форму для загрузки изображения на фронтенде с помощью ReactJS. Вы можете использовать элемент для выбора файла. При выборе файла пользователем, вы должны сохранить файл в состоянии компонента или использовать библиотеку для работы с файлами, например react-dropzone.
Шаг 2: Отправка изображения на сервер
После того как пользователь выбрал изображение, вам нужно отправить его на сервер. Для этого вы можете использовать библиотеку axios или fetch. Создайте POST запрос к вашему ASP .NET Web API endpoint, который будет обрабатывать загрузку изображения.
Пример запроса с использованием axios:
Шаг 3: Обработка загрузки на сервере
На стороне сервера вам нужно написать обработчик для загрузки изображения. В ASP .NET Web API вы можете использовать контроллер и метод, который будет принимать файл и сохранять его на сервере.
Пример контроллера в ASP .NET Web API:
Шаг 4: Обработка ответа
После того как изображение успешно загружено на сервер, вы можете получить ответ от сервера и обработать его на фронтенде. В случае успешной загрузки, вы можете показать пользователю уведомление об успешной загрузке.
Это основные шаги, которые вам нужно выполнить для загрузки изображения с фронтенда на сервер, используя ReactJS и ASP .NET Web API. Не забудьте добавить проверки на стороне сервера для обработки ошибок и безопасности загружаемых файлов.