如何将 FileStreamResult 转换为 IFormFile?

Fat*_*mov 6 c# asp.net-mvc

我使用此代码更改图像的大小。但是这个方法返回FileStreamResult. 我想转换FileStreamResultIFromFile. 我怎样才能做到这一点?

注意:我正在使用CoreCompat 来更改图像大小。

public FileStreamResult ChangeSize(IFormFile file)  
{
    using (var img = System.Drawing.Image.FromStream(file.OpenReadStream()))
    {
        Stream ms = new MemoryStream(img.Resize(100, 100).ToByteArray());

        return new FileStreamResult(ms, "image/jpg");
    }
}
Run Code Online (Sandbox Code Playgroud)

Cap*_*nny 7

这适用于该文件,但它似乎不会复制其他数据,例如内容类型

public IFormFile GetFormFile(FileStreamResult fsr)
{
    using (var fs = fsr.FileStream)
    {
        file = new FormFile(fs, 0, fs.Length, "name", fsr.FileDownloadName);
    }
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*rns 3

这应该处理将 FileStreamResult 转换为 FormFile:

public IFormFile ReturnFormFile(FileStreamResult result)
{
    var ms = new MemoryStream();
    try
    {
        result.FileStream.CopyTo(ms);
        return new FormFile(ms, 0, ms.Length);
    }
    catch(Exception e){
       ms.Dispose();
       throw;
    }
    finally
    {
        ms.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)