解决方案 »

  1.   

    我做php的时候,上传的图片应该要在重新保存一次图片到服务器上,然后你才可以读取文件,如果你直接读取文本框中的文件名称,肯定是找不到文件的啊,
      

  2.   

    我发布到本机IIS是可以的,别人局域网访问没有问题,发布到另外一台电脑(服务器)就不行报错(也是局域网访问的),不知道为什么????
      

  3.   

    检查你的Bave_UploadImage函数。里面肯定有保存文件的代码了。
    如果需要保存,确保你的asp.net运行account:NETWORK SERVICE(IIS6下)有对target目录的读写权限。
      

  4.   

    你本机,是vs 的delvelopment web server吧,没有权限问题。
    而且你本机应该有那个目录。
      

  5.   

     /// <summary>
        /// 上传图片保存
        /// </summary>
        /// <param name="UrlName">图片地址</param>
        /// <param name="ImageName">保存数据库名称(自定义的)</param>
        private void Bave_UploadImage(string UrlName, string ImageName)
        {
            string type = UrlName.Substring(UrlName.LastIndexOf(".") + 1);
            FileStream fs = File.OpenRead(UrlName);
            byte[] content = new byte[fs.Length];
            fs.Read(content, 0, content.Length);
            fs.Close();
            //保存数据库
            DBHelp.UploadImage(this.txtJcCode.Text, content, 100, ImageName, type);
        }
      

  6.   

    FileStream fs = File.OpenRead(UrlName);
    哪里保存的?这里是读取。保存,没有异常吗?
      

  7.   

    我本机发布IIS别人访问保存没有异常,就是服务器发布报错:Could not find a part of the path 'D:\司机信息照片\DSCN0228.JPG 
    FileStream fs = File.OpenRead(UrlName);
            byte[] content = new byte[fs.Length];
            fs.Read(content, 0, content.Length);
            fs.Close();
      

  8.   

    保存代码: public static bool UploadImage(string JcCode, byte[] content, int Size, string ImageName, string Type)
            {
                //打开数据库连接
                objSqlConnection.Open();
                bool result = false;//定义一个返回变量,初值为false
                try
                {
                    SqlCommand cm = new SqlCommand("INSERT INTO dbo.UploadImage(JcCode,Bytes,Size,ImageName,ImageType)VALUES(@JcCode,@Bytes,@Size,@ImageName,@ImageType)", objSqlConnection);
                    cm.Parameters.Add("@JcCode", SqlDbType.VarChar);
                    cm.Parameters["@JcCode"].Value = JcCode;
                    cm.Parameters.Add("@Bytes", SqlDbType.Image);
                    cm.Parameters["@Bytes"].Value = content;
                    cm.Parameters.Add("@Size", SqlDbType.VarChar);
                    cm.Parameters["@Size"].Value = Size.ToString();
                    cm.Parameters.Add("@ImageName", SqlDbType.VarChar);
                    cm.Parameters["@ImageName"].Value = ImageName;
                    cm.Parameters.Add("@ImageType", SqlDbType.VarChar);
                    cm.Parameters["@ImageType"].Value = Type;
                    int n = cm.ExecuteNonQuery();
                    objSqlConnection.Close();
                    if (n > 0)
                    {
                        result = true;
                    }            }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                }
                finally
                {
                    objSqlConnection.Close();
                }
                return result;
      

  9.   

    FileStream fs = File.OpenRead(UrlName); 之前应该有保存的地方。如果权限问题,保存也会报错。
    因此估计你保存的路径和读取的路径不同了。之后还没有走到,和你目前的问题没有关系。
      

  10.   

    UploadImage还没有走到,不用看。
      

  11.   

    这是我自己写的一个上传读取excel的,用的是FileUpload,我把上传的贴一下,希望可以对你有用。
    if (this.FileUpload1.HasFile)
     {
       string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();
                    
                    if (IsXls != ".xls")
                    {
                        MessageBox.Show("本程序只能识别excel文件!",this);
                        return;
                    }
                    xlsName =  DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss")+System.IO.Path.GetFileName(FileUpload1.FileName) ;                // string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim();                DataTable dt = new DataTable();
                    int len = this.FileUpload1.FileName.ToString().Trim().Length;                string path = Server.MapPath("../UpLoad/") + xlsName;
                    this.FileUpload1.SaveAs(path); //上传文件
      

  12.   

    发布到别的机子(服务器)IIS  UploadImage是没有执行的,如果执行了,那肯定是能够保存成功的。应该是这里就报错了。FileStream fs = File.OpenRead(UrlName);没有找到这个图片的路径
      

  13.   

     /// <summary>
        /// 上传图片保存
        /// </summary>
        /// <param name="UrlName">图片地址</param>
        /// <param name="ImageName">保存数据库名称(自定义的)</param>
        private void Bave_UploadImage(string UrlName, string ImageName)
        {
            string type = UrlName.Substring(UrlName.LastIndexOf(".") + 1);
            FileStream fs = File.OpenRead(UrlName);
            byte[] content = new byte[fs.Length];
            fs.Read(content, 0, content.Length);
            fs.Close();
            //保存数据库
            DBHelp.UploadImage(this.txtJcCode.Text, content, 100, ImageName, type);
        }你这个是上传?                <asp:FileUpload ID="FileUpload1" runat="server" />
                    &nbsp;
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" 
                        style="height: 21px" />
        protected void Button1_Click(object sender, EventArgs e)
        {
            byte[] bt = FileUpload1.FileBytes;
            Response.Clear();
            Response.ContentType = "image/gif";
            Response.BinaryWrite(bt);
        }FileUpload1直接有保存方法
     FileUpload1.SaveAs("保存地址");
      

  14.   

    程序有个Upload文件夹,存放上传的东西。当时部署到服务器后仍然报错,问题是没有上传到服务器的权限,你给Upload设置一下权限就可以了。
      

  15.   

    发布到别的机子(服务器)IIS  UploadImage是没有执行的,如果执行了,那肯定是能够保存成功的。应该是这里就报错了。FileStream fs = File.OpenRead(UrlName);没有找到这个图片的路径这个路径肯定是你程序前面保存的,你不会把客户端路径用在服务器端路径了吧。
      

  16.   

    没有的,我是本地上传图片,直接保存数据库中,保存二进制形式,不保存图片路径。没有路径怎么提示"找不到路径?"
    Could not find a part of the path 'D:\司机信息照片\DSCN0228.JPG' 
    数据库保存地址不就好了,访问时查看地址不就好了,保存在数据库貌似没人用吧,这样要是有问题找都麻烦了.换换试试,
      

  17.   

    你看下这篇文章里的代码,他怎么从Upload控件里读取的图片Byte。http://www.ezzylearning.com/tutorial.aspx?tid=4287517算了简单贴下吧:protected void btnSave_Click(object sender, EventArgs e)

       if(FileUpload1.HasFile) 
       { 
          string productName = txtProductName.Text; 
          byte[] productImage = FileUpload1.FileBytes;       string constr = "Server=TestServer; Database=SampleDB; uid=sa; pwd=abc123"; 
          string query = "INSERT INTO Products(ProductName, ProductImage) VALUES(@ProductName, @ProductImage)";       SqlConnection con = new SqlConnection(constr); 
          SqlCommand com = new SqlCommand(query, con);       com.Parameters.Add("@ProductName", SqlDbType.NVarChar).Value = productName; 
          com.Parameters.Add("@ProductImage", SqlDbType.VarBinary).Value = productImage;       con.Open(); 
          int result = com.ExecuteNonQuery(); 
          con.Close();       if (result > 0) 
          { 
             lblMessage.Text = "Product Saved Successfully"; 
          } 
       } 
       else 
       { 
          lblMessage.Text = "Please Select Product Image File"; 
       } 
    }
      

  18.   


    请教如设置下权限,有具体步骤不。请指教。
    权限的话,我的因为是内部服务器,所以我赋的是Users的权限。》右键 在你服务器上你要上传图片的那个文件夹>安全>然后设置一下
      

  19.   


    请教如设置下权限,有具体步骤不。请指教。
    权限的话,我的因为是内部服务器,所以我赋的是Users的权限。》右键 在你服务器上你要上传图片的那个文件夹>安全>然后设置一下我不是上传到固定文件夹,而是直接读取客户端上传图片路径,转换成二进制流保存到表字段。
      

  20.   


    请教如设置下权限,有具体步骤不。请指教。
    权限的话,我的因为是内部服务器,所以我赋的是Users的权限。》右键 在你服务器上你要上传图片的那个文件夹>安全>然后设置一下我不是上传到固定文件夹,而是直接读取客户端上传图片路径,转换成二进制流保存到表字段。如果能这么干的话,不知道会有多少肉鸡呢?
      

  21.   

    我把方式也修改过来了,本地成功,发布本地IIS也是成功,发布到另外一台电脑IIS就报错,还是路径报错,刚才那个错误。
      

  22.   

    我又重新做了个网站,发布到了IIS,一个上传图片的,代码一样的,图片居然保存可以。晕死!
      

  23.   


    你是将本地图片的路径保存在数据库中吗?还是 将图片进行二进制转换,存储到IMAGE数据类型的字段中?
    存路径的话肯定不行,路径是你本机的绝对路径,别人肯定看不到;存的是Image信息的话,应该是没有问题的。
    //获取图片的二进制流 
                FileStream fs = new FileStream(fileSaveURL, FileMode.Open);            
                BinaryReader br = new BinaryReader(fs);  
                byte[] photo = br.ReadBytes((int)fs.Length);  
                br.Close();             fs.Close();  
                //把图片写到数据库中 
                string conn = @"Data Source=JNITDEV\SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True"; 
                using (SqlConnection sqlConn = new SqlConnection(conn))             { 
                    SqlCommand sqlComm = new SqlCommand();  
                    sqlConn.Open(); 
                    sqlComm.Connection = sqlConn; 
                    sqlComm.CommandText = "INSERT INTO Picture (PictureContent, PictureText) VALUES (@Picture,'Test')"; 
                    sqlComm.CommandType = CommandType.Text;  
                    sqlComm.Parameters.Add("@Picture", SqlDbType.Image,photo.Length).Value = photo; 
     
                    sqlComm.ExecuteNonQuery();            
    }         
    }
      

  24.   

    我把方式也修改过来了,本地成功,发布本地IIS也是成功,发布到另外一台电脑IIS就报错,还是路径报错,刚才那个错误。b/s架构的程序只能操作服务器的文件目录(除非做磁盘映射,可以读取其它服务器的硬盘),否则是无法读取客户端的文件目录的,你本机测试能成功,是因为此时你的本地目录就是服务器目录,一但脱离本机,那肯定是会出错的
      

  25.   

    用的是:openFileDialog数据库为Picture,数据表为Picture,表结构设计如下所示: 
    PictureID int 4,          PictureContent Image,        PictureText nvarchar(50)
      

  26.   

    找到原因了,一个很低级的原因,卡了几个小时了,我发布时没有把这个DataUploadEditFrom.aspx页面更新到IIS只是更新了BIN目录的,我一直以为我的服务器DataUploadEditFrom.aspx是新的,没有改动的,发布地方太多了弄混淆了。
      

  27.   

    楼主,我出现类似的问题,部署到服务器,然后登录部署的网址上传图片,出现这个Could not find a part of the path 'C:\Users\Administrator\Desktop\新建文件夹\psbCARAIM7Q.jpg'.,如何解决的啊!