1
resposta

Erro ao enviar POST

Esta dando este erro no enviio da api

app.MapPost("/Artistas", async ([FromServices] IHostEnvironment env, [FromServices] DAL<Artista> dal, [FromBody] ArtistaRequest artistaRequest) =>
{
    var nome = artistaRequest.nome.Trim();
    var imagemArtista = DateTime.Now.ToString("ddMMyyyyhhss") + "." + nome + ".jpeg";

    var path = Path.Combine(env.ContentRootPath,
                      "wwwroot", "FotoPerfil", imagemArtista);

    try
    {
        byte[] imageBytes = Convert.FromBase64String(artistaRequest.fotoPerfil!);
        using MemoryStream ms = new MemoryStream(imageBytes);
        using FileStream fs = new(path, FileMode.Create);
        await ms.CopyToAsync(fs);
    }
    catch (FormatException)
    {
        return Results.BadRequest();
    }

    var artista = new Artista(artistaRequest.nome, artistaRequest.bio)
    {
        FotoPerfil = $"/FotoPerfil/{imagemArtista}"
    };

    dal.Adicionar(artista);
    return Results.Ok();
});
    
    private async Task UploadFile(IBrowserFile file)
{
    long maxFileSize = 1024 * 1024 * 15;
    var format = "image/jpeg";
    var resizedImage = await file.RequestImageFileAsync(format, 200, 200);

    using var fileStream = resizedImage.OpenReadStream();
    using var memoryStream = new MemoryStream();
    await fileStream.CopyToAsync(memoryStream);

    var imageUpload = Convert.ToBase64String(memoryStream.ToArray());
    fileImage = $"data:{format};base64,{imageUpload}";
    fotoPerfil = imageUpload;
} 

private async Task UploadFile(IBrowserFile file)
{
    long maxFileSize = 1024 * 1024 * 15;
    var format = "image/jpeg";
    var resizedImage = await file.RequestImageFileAsync(format, 200, 200);

    using var fileStream = resizedImage.OpenReadStream();
    using var memoryStream = new MemoryStream();
    await fileStream.CopyToAsync(memoryStream);

    var imageUpload = Convert.ToBase64String(memoryStream.ToArray());
    fileImage = $"data:{format};base64,{imageUpload}";
    fotoPerfil = imageUpload;
} 

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Maicon! Tudo bem?

Isso geralmente ocorre quando a string Base64 não está formatada corretamente. Aqui estão algumas dicas para resolver o problema:

  1. Verifique a String Base64: Certifique-se de que a string Base64 enviada no artistaRequest.fotoPerfil está correta. Ela deve ser uma string válida e não deve conter caracteres inválidos ou espaços adicionais.

  2. Remova o Prefixo: Se a string Base64 está no formato data:image/jpeg;base64,..., você precisa remover o prefixo data:image/jpeg;base64, antes de realizar a conversão. Certifique-se de que a string que você está convertendo começa diretamente com os dados codificados.

    string base64Data = artistaRequest.fotoPerfil!.Split(',')[1];
    byte[] imageBytes = Convert.FromBase64String(base64Data);
    
  3. Verifique o Upload: No método UploadFile, certifique-se de que a conversão para Base64 está correta e que a string resultante é válida.

Se seguir essas dicas não resolver, pode ser útil verificar o processo de upload e qualquer manipulação da string Base64 para garantir que ela esteja correta antes de ser enviada para o servidor.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.