编写了如下代码,先判断大小和尺寸,再决定是否上传。在本机调试,反应超快,一上传到服务器,就变得无比慢了。不管符不符合上传条件,一律超慢。如果符合上传条件,慢我都可以接受,但连判断为不符合条件的都要等很久才出现提示我就受不了(我设定这个限定条件目的就是为了快速返回嘛)。
只要把红色的注释掉(保存到服务器),立马就快了,连判断不符合条件的都能马上返回……
            if (fimg1.PostedFile.FileName != "")
            {
                string savepath = Server.MapPath("tempimg/");
                string fullname = fimg1.PostedFile.FileName;
                long sizeint = fimg1.PostedFile.ContentLength;
                string type = fimg1.PostedFile.ContentType;                if (type == "image/pjpeg" || type == "image/jpeg")
                {
                    if (sizeint > 1048576)
                    {
                        ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "提示", "alert('您上传的图片大小超过了限制。');", true); ;
                    }
                    else
                    {                        type = member.Text + DateTime.Now.ToString("yyMMddHHmmss") + ".jpg";
                        fimg1.PostedFile.SaveAs(savepath + type);
                        ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "提示", "alert('成功上传。');", true);                    }
                }
                else
                {
                    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "提示", "alert('您上传的并非图片文件。');", true);
                }
            }
            else
            {
                ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "提示", "alert('您没有选择任何图片文件。');", true);
            }

解决方案 »

  1.   

    你在后台做的文件格式和文件大小判断。也就是说是在服务器端判断的,这就意味着,无论客户端上传什么样的文件,你总是要把客户端的文件传输到服务器以后再决定是否保存,而不是在客户端决定是否上传。
    唯一暂时不完全可信的方法是用js在客户端做格式判断,或者做服务端验证以及调用activx验证大小。但是目前好像还没有完美的解决方案。
      

  2.   

    if (type == "image/pjpeg" || type == "image/jpeg") 
                    { 
                        if (sizeint > 1048576) 
                        { 你这里不就是在判断 格式 和 大小吗? 并没有上传啊...事件的发生也是分先后的啊..