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

上传图片到SQL数据库,在本机和局域网测试无问题,发布到外网就上传不了,跪求大虾帮忙~

在VS下编译测试无问题,在本机用IIS7发布,用局域网测试也无问题,但是发布到外网服务器上后(IIS6),点击确定,就不会弹出“上传成功”,数据库内也无上传的图片,这是什么原因啊?
代码如下:


    public partial class users_ba_upload : System.Web.UI.Page

    {
        //protected System.Web.UI.WebControls.Button btnSubmit;
        //protected System.Web.UI.HtmlControls.HtmlInputFile myFile;
        private Int32 FileLength = 0;//有可能图片的大小会超出INT的范围,所以声明为Int32,当然这和下面大小的判断有关系
        private string con = "server=(local);uid=sa;pwd=123;database=eisfiles_bz2";
        private string con1 = "server=(local);uid=sa;pwd=123;database=eistdoc_bz";

        public string bargain_no = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            //获得楼编号
            bargain_no = Request.QueryString["bargain_no"];
            if (bargain_no == null || bargain_no == String.Empty)
            {
                return;
            }
        }

        #region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }

        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void btnSubmit_Click(object sender, System.EventArgs e)
        {
            try
            {
                SqlConnection conn1 = new SqlConnection(con1);
                SqlConnection conn = new SqlConnection(con);
                string FileName = myFile.Value;
                HttpPostedFile UpFile = myFile.PostedFile;//获取对由客户端指定的上传文件的访问
                FileLength = UpFile.ContentLength;//获取上传文件的字节大小
                if (FileLength == 0)
                {
                    Response.Write("<script>alert('对不起,请选择要上传的图片')</script>");
                    return;
                }
                string exName = FileName.Substring(FileName.LastIndexOf(".") + 1).ToUpper();//截取图片的后缀名
                if (exName == "JPG" || exName == "BMP" || exName == "GIF")//判断图片的类型
                {
                    if (FileLength > 496000)//判断图片是否大于400k(根据自己的需要判断大小)
                    {
                        Response.Write("<script>alert('对不起,图片大小不能大于400K')</script>");
                        return;
                    }
                    else
                    {
                    string ImageName = "合同签字";//图片名称设置为保存的时间
                        Byte[] FileByte = new Byte[FileLength]; //图象文件储存到数组  
                        Stream ObjectStream = UpFile.InputStream;//建立数据流对像,获取一个 Stream 对象,该对象指向一个上载文件,以准备读取该文件的内容。

                        ObjectStream.Read(FileByte, 0, FileLength); //读取图象文件数据
                        string StrSql = "Insert Into Files (FileBody,FileName,keycode,subkeycode)Values(@Image,@ImageName,@keycode,@subkeycode)";
                        string StrSql1 = "update PO_Records set signature=1";
                        SqlCommand Cmd = new SqlCommand(StrSql, conn);
                        SqlCommand Cmd1 = new SqlCommand(StrSql1, conn1);
                        Cmd.Parameters.Add("@Image", SqlDbType.Binary, FileLength).Value = FileByte;
                        Cmd.Parameters.Add("@ImageName", SqlDbType.VarChar, 150).Value = ImageName;
                        Cmd.Parameters.Add("@keycode", SqlDbType.VarChar, 20).Value = bargain_no;
                        Cmd.Parameters.Add("@subkeycode", SqlDbType.VarChar, 10).Value = 0;
                        conn.Open();
                        Cmd.ExecuteNonQuery();
                        conn.Close();
                        conn1.Open();
                        Cmd1.ExecuteNonQuery();
                        conn1.Close();
                        Response.Write("<script>alert('图片上传成功')</script>");
                    }
                        
                }

                else
                {
                    Response.Write("<script>alert('对不起,请选择正确的的图片')</script>");
                    return;
                }

            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('" + ex.Message + "')</script>");
            }
        }
    } --------------------编程问答-------------------- 查服务器上上传文件夹的权限。。
--------------------编程问答-------------------- 查看权限! --------------------编程问答-------------------- 我有点不明白,这个代码是直接把图片转换成2进制写进服务器的SQL数据库里image类型的字段,不是把图片直接保存在某个文件夹里啊,而且发布的整个网站的文件夹,我都给权限了,every one和network service都给了 --------------------编程问答-------------------- 嗯,我也没看出问题来
换个类型试试
Cmd.Parameters.Add("@Image", SqlDbType.Image).Value = FileByte;
--------------------编程问答-------------------- 建议你单独捕获下执行Cmd.ExecuteNonQuery();时有没什么异常
--------------------编程问答-------------------- 可能是服务器 支持的问题了 --------------------编程问答-------------------- 问空间商,痛骂。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,