Как использовать iFormFile и прикрепить его к DTO, чтобы быть отправленным клиенту в Asp.net CoreC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать iFormFile и прикрепить его к DTO, чтобы быть отправленным клиенту в Asp.net Core

Сообщение Anonymous »

Я пишу веб -приложение, используя .NET для бэкэнда и реагировать как клиент. Я хочу реализовать авторизацию в форму входа в систему и, таким образом, сделал две модели (DTO) для отправки обратно клиенту. Один для входа и регистрации соответственно. У меня есть класс AccountController , где я обрабатываю запросы Post и Get для текущего пользователя (пользователь после входа в систему).
Как упомянуто выше, у меня есть модельный класс с именем пользователя и его пользователя . В этом классе модели я сделал некоторые реквизиты (например, имя пользователя, пароль, профилепиктурурл, электронная почта) и т. Д. Я хочу, чтобы пользователь загрузил изображение, которое, в свою очередь, будет добавлено к ProfilePictureUrl в запрос обратно на сервер.

Код: Выделить всё

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;

namespace API.Entities
{
public class User : IdentityUser
{
public IFormFile profilePhotoURL {get; set; }
public string Name { get; set; }
}
}
< /code>
Имя пользователя, электронная почта и номера телефонов получаются из класса IdentityUser из .net. < /p>
RegisterDto < /p>
using Microsoft.AspNetCore.Http;

namespace API.DTOs
{
public class RegisterDTO : LoginDTO
{
public string Email { get; set; }
public string Name { get; set; }
public FormFile profilePhotoURL { get; set; }
public string PhoneNumber { get; set; }
}
}
Inside of AccountController , мой метод post для регистрации:

Код: Выделить всё

[HttpPost("register"), DisableRequestSizeLimit]
public async Task RegisterUser(RegisterDTO registerDTO)
{
//getting the file from request
var postedProfile = Request.Form.Files[0];

// setting the Uploads folder
var Uploads = Path.Combine(Directory.GetCurrentDirectory(), "Uploads");

if (postedProfile.Length > 0)
{
var fileName = ContentDispositionHeaderValue.Parse(postedProfile.ContentDisposition).FileName.Trim();
var pathToSave = Path.Combine(Uploads, fileName.ToString());

using (var fileStream = new FileStream(pathToSave, FileMode.Create))
{
await postedProfile.CopyToAsync(fileStream);
}

Ok($"File Uploaded successfully");
}
else
{
return BadRequest(new ProblemDetails
{
Title = "400 - Bad Request",
Status = 400,
Detail = "File not uploaded"
});
}

var registeredUser = new User
{
UserName = registerDTO.userName,
Email = registerDTO.Email,
Name = registerDTO.Name,
profilePhotoURL = postedProfile,
PhoneNumber = registerDTO.PhoneNumber
};

var result = await _userManager.CreateAsync(registeredUser, registerDTO.Password);

if (!result.Succeeded)
{
foreach (var Error in result.Errors)
{
ModelState.AddModelError(Error.Code, Error.Description);
}

return ValidationProblem();
}

await _userManager.AddToRoleAsync(registeredUser, "Member");

return StatusCode(201);
}
Я хочу настроить загруженное изображение в свойство ProfilePhotourl моего класса RegisterDto , но при проверке этого в Swagger я получаю следующую ошибку:

значение JSON не может быть преобразовано в Microsoft.ASPLecore.ht.formf. Путь: $ .profilephotourl | Линевое белье: 5 | BytePositionInline: 36.

Приведенная выше ошибка находится в модели state ошибок. объект?
Все предложения приветствуются :)

Подробнее здесь: https://stackoverflow.com/questions/735 ... ient-in-as
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»