zoukankan      html  css  js  c++  java
  • 将图片上传到数据库 因File.Open遭遇System.UnauthorizedAccessException

    本人在尝试 上传图片到服务器数据库中以Image类型进行保存时
    其初只在本机进行操作
    利用如下代码 进行图片到byte[]后 保存到数据库
    using (SqlConnection sqlConn = new SqlConnection(DBClass.DBConnString()))
    {
        sqlConn.Open();
        FileStream fs = File.Open(this.FileUpload1.PostedFile.FileName, FileMode.Open);
        BinaryReader br = new BinaryReader(fs);
        byte[] photo = br.ReadBytes((int)fs.Length);
        br.Close();
        fs.Close();

        String strSql = "INSERT INTO PhotoInfo( AlbumID, PhotoName, PhotoType ";
        strSql += " , PhotoContent, PhotoByteSize, PhotoNote )";
        strSql += " VALUES( '" + Request.QueryString["AlbumID"].Trim() + "' ";
        strSql += " ,'" + this.txt_PhotoName.Text.Trim() + "' ";
        strSql += " ,'" + this.FileUpload1.PostedFile.ContentType + "' ";
        strSql += " ,@photoBinary ";
        strSql += " ," + this.FileUpload1.PostedFile.ContentLength + " ";
        strSql += " ,'" + this.txt_PhotoNote.Text.Trim() + "' ";
        strSql += " ) ";

        SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
        sqlComm.Parameters.Add("@photoBinary", SqlDbType.Image, photo.Length);
        sqlComm.Parameters["@photoBinary"].Value = photo;

        sqlComm.ExecuteNonQuery();
        sqlConn.Close();
    }
    在本机操作没有问题
    但其他用户从其他电脑进行图片上传时 就出现了如下错误
    -------------------------------------------------------
    对路径“C:\Documents and Settings\Administrator\桌面\logo.jpg”的访问被拒绝。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.UnauthorizedAccessException: 对路径“C:\Documents and Settings\Administrator\桌面\logo.jpg”的访问被拒绝。

    ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

    要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

    源错误:


    行 38:             //FileStream fs = new System.IO.FileStream(this.FileUpload1.PostedFile.FileName, FileMode.Open, FileAccess.Read);
    行 39:
    行 40:             FileStream fs = File.Open(this.FileUpload1.PostedFile.FileName, FileMode.Open);
    行 41:             BinaryReader br = new BinaryReader(fs);
    行 42:             byte[] photo = br.ReadBytes((int)fs.Length);
     .......
    =======================================
    经多方查找及尝试 问题出在File.Open上
    所以修改上传图片到数据库的代码如下:
    using (SqlConnection sqlConn = new SqlConnection(DBClass.DBConnString()))
    {
        sqlConn.Open();
        int intImageSize;
        string strImageType;
        Stream ImageStream;

        intImageSize = this.FileUpload1.PostedFile.ContentLength;
        ImageStream = this.FileUpload1.PostedFile.InputStream;
        strImageType = this.FileUpload1.PostedFile.ContentType;
        Byte[] ImageContent = new Byte[intImageSize];
        int intStatus;
        intStatus = ImageStream.Read(ImageContent, 0, intImageSize);

        String strSql = "INSERT INTO PhotoInfo( AlbumID, PhotoName, PhotoType ";
        strSql += " , PhotoContent, PhotoByteSize, PhotoNote )";
        strSql += " VALUES( '" + Request.QueryString["AlbumID"].Trim() + "' ";
        strSql += " ,'" + this.txt_PhotoName.Text.Trim() + "' ";
        strSql += " ,'" + this.FileUpload1.PostedFile.ContentType + "' ";
        strSql += " ,@photoBinary ";
        strSql += " ," + this.FileUpload1.PostedFile.ContentLength + " ";
        strSql += " ,'" + this.txt_PhotoNote.Text.Trim() + "' ";
        strSql += " ) ";

        SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
        sqlComm.Parameters.Add("@photoBinary", SqlDbType.Image, intImageSize);
        sqlComm.Parameters["@photoBinary"].Value = ImageContent;

        sqlComm.ExecuteNonQuery();
        sqlConn.Close();
    }

  • 相关阅读:
    Mininet介绍及安装
    第9周学习进度
    团队效绩计划
    第一阶段冲刺个人博客10
    第一阶段冲刺个人博客09
    第一阶段冲刺个人博客08
    win10自带中文输入法的用户体验
    团队项目冲刺第十天
    构建之法阅读笔记02
    团队项目冲刺第九天
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1095122.html
Copyright © 2011-2022 走看看