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

非常奇怪的问题判断图片长宽大小,各位谁帮我看下啊,小弟谢过了100分

#region 图片上传
            int imageLength; //保存图片大小
            HttpPostedFile newFileUp = this.FileUpload1.PostedFile;
            //获取图片文件扩展名
            string[] fileName = new string[3];
            fileName[0] = newFileUp.FileName;
            if (fileName[0].Length > 0 )
            {
                string d = fileName[0].ToString();
                System.Drawing.Image image = System.Drawing.Image.FromFile(d);
                if(image.Height > 200 || image.Width > 180)
                {
                    this.msg.Value = "7";
                    return;
                }

System.Drawing.Image image = System.Drawing.Image.FromFile(d);这一步的时候就暴错了

C:\Documents and Settings\Administrator\桌面\DSCN1564.JPG 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.IO.FileNotFoundException: C:\Documents and Settings\Administrator\桌面\DSCN1564.JPG

源错误: 


行 70:             {
行 71:                 string d = fileName[0].ToString();
行 72:                 System.Drawing.Image image = System.Drawing.Image.FromFile(d);
行 73:                 if(image.Height > 200 || image.Width > 180)
行 74:                 {
 

--------------------编程问答-------------------- image换个名称呢 --------------------编程问答-------------------- sf? --------------------编程问答-------------------- string d = fileName[0].ToString(); 
                System.Drawing.Image image = System.Drawing.Image.FromFile(d); 

d是保存的客户端文件路径

Image.FromFile是从服务器端取图片

所以你要先把文件保存到服务器上,然后再用它初始化Image
Request.UploadFile[0].SaveAs(Server.MapPath("a.jpg"));保存到网站根目录
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("a.jpg"));从网站根目录取图片 --------------------编程问答--------------------

if (File.Exists(path))        //判断文件是否存在
                {
                    System.Drawing.Image image = System.Drawing.Image.FromFile(path);
                    this.pictureBox1.Image = image;
                    this.pictureBox1.Refresh();
                    this.label5.Text = image.Width.ToString();
                    this.label6.Text = image.Height.ToString();
                    FileInfo fileInfo = new FileInfo(path);
                    if (image.Width > 99 && image.Width < 210)    //判断图片的宽是否是在100和210之间
                    {
                        if (image.Height > 99 && image.Height < 250)     //判断图片的长是否是在100和250之间
                        {
                             ........ //  
                       }
                    }
                }
--------------------编程问答-------------------- 都不行啊,还有没有人知道的啊 --------------------编程问答-------------------- 正确答案就在眼前,你却视若无睹。。。。。。无语
引用 5 楼 gjchjw 的回复:
都不行啊,还有没有人知道的啊
--------------------编程问答-------------------- 3楼正确 --------------------编程问答-------------------- 应该可以 --------------------编程问答-------------------- 3楼正解...给分吧.. --------------------编程问答-------------------- 这个例子有说到取图片的高度与宽度:

http://blog.csdn.net/insus/archive/2008/01/20/2055030.aspx --------------------编程问答--------------------

 int imageLength; //保存图片大小 
            HttpPostedFile newFileUp = this.FileUpload1.PostedFile;
            string[] fileName = new string[3]; 
        string ileName[0]=Server.MapPath("~/images/xxx.txt");//设置文件名(xxx.txt),以及文件路径
        FileUpload1.SaveAs(filename);
            //获取图片文件扩展名 

            if (fileName[0].Length > 0 ) 
            { 
                string d = fileName[0].ToString(); 
                System.Drawing.Image image = System.Drawing.Image.FromFile(d); 
                if(image.Height > 200  || image.Width > 180) 
                { 
                    this.msg.Value = "7"; 
                    return; 
                } 
            }

--------------------编程问答-------------------- FileNotFound
服务器端 客户端没有分清 --------------------编程问答-------------------- 问题已解!

客户端文件上传 》 先保存到服务器端 》才能按文件形式访问

int imageLength; //保存图片大小 
            HttpPostedFile newFileUp = this.FileUpload1.PostedFile; 
if(newFileUp == null) throw new Exception("请上传文件");
            //获取图片文件扩展名 
            //string[] fileName = new string[3]; 
           // fileName[0] = newFileUp.FileName; 

// 保存方式有多种
sring uploadDir = Server.MapPath("\\upload"); // 假设upload为上传目录
string filePath = uploadDir + "\\" + System.IO.Path.GetFileName(newFileUp.FileName);
newFileUp.SaveFile(filePath) // + try/catch
            //if (fileName[0].Length > 0 ) 
           // { 
                //string d = fileName[0].ToString(); 
                //System.Drawing.Image image = System.Drawing.Image.FromFile(d); 
                System.Drawing.Image image = System.Drawing.Image.FromFile(filePath); 
                if(image.Height > 200  ¦ ¦ image.Width > 180) 
                { 
                    this.msg.Value = "7"; 
                    return; 
                } 
--------------------编程问答-------------------- PostedFile不是IO操作的FileInfo。

PostedFile还在内存中,它的FileName是客户端的,你要把它保存一下,然后才能用GDI+打开操作。 --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,