当前位置:编程学习 > C#/ASP.NET >>

HttpPostedFile.InputSteam读取文件内容

最近在做一个项目,需要读取上传的图片信息与数据库中的图片做吻合比较,于是想到在上传图片的处理逻辑ashx文件中将上传的图片存储为二进制值, 再与数据库中的值做匹配测试.

代码如下
//.ashx

public class SaveHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Charset = "utf-8";

        HttpPostedFile file = context.Request.Files["Filedata"];
        
        if (file != null)
        {
            byte[] photoValue = new byte[file.ContentLength];
            file.InputStream.BeginRead(photoValue, 0, file.ContentLength, null, "1");
            context.Response.Write("1");
        }
        else
        {
            context.Response.Write("0");
        }

    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}


发现取出来的photoValue在上传一张照片时没有任何问题, 但在上传超过3张图片时,就只能保存上传队列的第一张图片.其余的二进制值全为0.请教各位大神出现这个问题的原因是什么,如何解决呢?

令我非常不解的是:如果在ashx中调用saveAs方法保存文件,上传超过3张图片将没有任何问题,处理代码如下:

public class SaveHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Charset = "utf-8";

        HttpPostedFile file = context.Request.Files["Filedata"];
        
        if (file != null)
        {
            string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"]) + "\\";
            
            if (!Directory.Exists(uploadPath))
            {
                Directory.CreateDirectory(uploadPath);
            }
            file.SaveAs(uploadPath + file.FileName);
            
            context.Response.Write("1");
        }
        else
        {
            context.Response.Write("0");
        }

    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
图片 二进制 HttpPostedFile  --------------------编程问答-------------------- 拷贝一个副本再来操作 --------------------编程问答-------------------- 现在想了一个比较笨的办法,先用saveAs方法保存为图片,再读取图片转换成二进制值.但是上述这个问题觉得很诡异, 所以想搞明白它. --------------------编程问答-------------------- 你这2段代码说明不了任何问题,我唯一想到的是你操作失误,放进 photoValue 就释放file, --------------------编程问答-------------------- 3楼能说得详细点吗? 如何释放file?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,