c# - 将图像转换为不同格式后,应用程序不断返回空文件

标签 c# .net asp.net-mvc

我正在尝试制作一个 MVC 应用程序,让客户端上传图像,将图像转换为不同的格式(在本例中为 .tif)并将其返回给客户端。

我遇到的问题是图像始终为 0kB。我似乎无法弄清楚问题所在。

View :

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype="multipart/form-data" }))
{
    <input accept=".bmp, .gif, .jpg, .jpeg" name="file" type="file" />
    <input type="submit" value="Submit" />
}

Controller Action :

    [HttpPost]
    [ActionName("Index")]
    public ActionResult UploadImages(HttpPostedFileBase file)
    {
        var tiffEncoder = ImageCodecInfo.GetImageEncoders()
            .SingleOrDefault(dec => dec.FormatID == ImageFormat.Tiff.Guid);
        Stream imgStream = new MemoryStream();

        using (EncoderParameters encParams = new EncoderParameters(1))
        using (Image img = Image.FromStream(file.InputStream, true, true))
        {
            encParams.Param[0] = new EncoderParameter(Encoder.Quality, 100);
            img.Save(imgStream, tiffEncoder, encParams);
        }
        var result = File(imgStream, "image/tiff", "image.tif");
        return result;
    }

经过调试,我清楚地看到 FileStream 属性包含数据。

enter image description here

最佳答案

imgStream 写入后需要倒带。在将其传递到 File

之前设置 imgStream.Position = 0;

关于c# - 将图像转换为不同格式后,应用程序不断返回空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49922722/

相关文章:

c# - 使用c#在asp.net中获取Bootstrap下拉复选框列表检查值的检查项

c# - .net 十进制值 1m 和 1.0000m 之间有什么实际区别吗?

c# - 从 MailItem (Microsoft.Office.Interop.Outlook) 获取唯一 ID?

asp.net-mvc - 仅来自 TextBoxFor() 的日期

asp.net-mvc - 带有 EF 的自定义成员提供程序

asp.net-mvc - 在 Windows 服务上调用客户端方法

c# - 如果表单没有焦点,则不会调用 OnPaint

.net - MAUI 和 Uno 平台有什么区别?

.net - NHibernate 和 ADO.NET 连接池

c# - 如何向 WCF ServiceContract 命名空间添加前缀