流到的HttpPostedFile =为什么我不应该处理流?

时间:2014-07-03 11:42:14

标签: asp.net

我必须在光盘上保存上传的图像,但首先我必须验证图像的宽度或高度是否小于50px。据我所知,当我们使用流时,我们必须处理这个流,所以我在验证方法中使用'using':

public bool CheckDimensions(HttpPostedFile file)
{
    using (Stream stream = file.InputStream)
    {
        System.Drawing.Image image = System.Drawing.Image.FromStream(stream);

        if (image.PhysicalDimension.Width < 50 || image.PhysicalDimension.Height < 50)
        {
            return false;
        }

        return true;
    }
}

但是我无法在第二种方法中保存图像,因为HttpPostedFile文件的ContentLength为0.当我不使用'using'语句时,HttpPostedFile的ContentLength是正确的(&gt; 0)。那么在那种情况下我不应该处理流?

1 个答案:

答案 0 :(得分:1)

因为file.InputStream是对上传文件的引用。使用using语句处理它意味着它被放置在也被引用/使用的任何地方

尝试

using(Stream stream = file.InputStream)
{
   bool isRightSize = CheckDimensions(stream);
   ... other operations on the stream
}

public bool CheckDimensions(Stream stream)
{

        System.Drawing.Image image = System.Drawing.Image.FromStream(stream);

        if (image.PhysicalDimension.Width < 50 || image.PhysicalDimension.Height < 50)
        {
            return false;
        }

        return true;

}