使用.NET Core将图像上传到PostgreSQL

时间:2018-10-30 10:57:38

标签: c# asp.net-core asp.net-core-webapi

我正在尝试将图像上传到PostgreSQL数据库。我试图将文件另存为二进制文件,然后返回上载图像的新插入ID,但始终会收到500个内部服务器错误。

这是我的控制器:

public class ImageController : ControllerBase
{
    private readonly ImageDbContext _context;

    public ImageController(ImageDbContext context)
    {
        _context = context;
    }

    [HttpPost("api/Image/upload")]
    public async Task<IActionResult> UploadImage(Image images, List<IFormFile> ImageData)
    {
        foreach (var item in ImageData)
        {
            if (item.Length > 0)
            {
                using (var stream = new MemoryStream())
                {
                    await item.CopyToAsync(stream);
                    images.ImageData = stream.ToArray();
                }
            }
        }

        _context.Image.Add(images);
        _context.SaveChanges();
        return CreatedAtAction("ImageId", new { id = images.ImageId });
    }
}

这是我的模特:

namespace Upload_images_API.Models
{
    public class Image
    {
        public int ImageId { get; set; }
        public byte[] ImageData { get; set; }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为问题在于映射到“ Image”类。我敢打赌,如果您使用提琴手并检查请求,您会发现事情并不像您认为的那么好...

我首先要删除第一个“图片”参数...

有关完整的教程,请参考此basic implementation,其中包括良好的做法(指出您不应将二进制文件存储在数据库中)