怎么在上传前就判断他的大小,如果大了就提示 文件过大,怎么做啊?
另外怎么用fileupload上传图片啊?

解决方案 »

  1.   

    由于客户端不能操作本地文件,所以不能事先得到文件大小。
    ie里可以降低安全性的方法用下面的代码
    <script type="text/javascript">    
    function getFileSize(filePath)    
    {    
       var fso = new ActiveXObject("Scripting.FileSystemObject");    
       alert("文件大小为:"+fso.GetFile(filePath).size);    
    }    
    </script>    
    <body>    
    <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">    
    </body>  Firefox 3.6里可以采用下面的方法
    http://dotnet.aspx.cc/article/facbb9a7-c9c6-46ad-9591-5ba34ae27e58/read.aspx
      

  2.   

    首先回答你的第二个问题 上传图片
    事先在后台注册this.IconFile.Attributes.Add("onpropertychange", "UploadOnpropertychange()");
    然后这里面JS代码获取整个上传的路径,split会用吧 得到文件的类型,判断下是否是你需要的类型就可以了
    不要期望说选择对话框的数据类型可以由你自己代码控制 当然你第二次上传文件时,那个数据类型会自动变成第一次上传文件相同的数据类型
      

  3.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    public partial class Default3 : System.Web.UI.Page
    {
        public override void DataBind()
        {
            getFile();
            
        }    private string username = "srym";
        private HyperLink hy;
        private long lg=0;
        private void getFile()
        {
            foreach (string s in Directory.GetFiles(Server.MapPath("~/upload")))
            {
                string temp = s;
                temp = temp.Split('\\')[temp.Split('\\').Length - 1];
                if(temp.StartsWith(username))
                {
                    FileInfo fl=new FileInfo(s);
                    lg += fl.Length;
                    temp = temp.Substring(temp.IndexOf("(")+1);
                    temp = temp.Substring(0, temp.LastIndexOf(")"));
                    hy=new HyperLink();
                    hy.Attributes.Add("title",File.GetCreationTime(s).ToString());
                    hy.Text = temp+"<br />";
                    hy.NavigateUrl = "~/upload/" + temp;
                    this.PlaceHolder1.Controls.Add(hy);
                    
                }        } 
            Label lbl = new Label();
            lbl.Text = "您已经使用了"+lg.ToString()+"KB"+"<br />您还有"+(40960-lg)+"KB";
            this.PlaceHolder1.Controls.Add(lbl);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataBind();
                
            }
        }    private string path;
        private string filename;
        private string format;
        protected void Button1_Click(object sender, EventArgs e)
        {
            path = Server.MapPath("~/upload");
            format = this.File1.PostedFile.FileName.Split('.')[this.File1.PostedFile.FileName.Split('.').Length - 1];
            //filename = this.File1.PostedFile.FileName;
            filename = "srym"+System.DateTime.Now.ToString().Replace("/", "").Replace(":", "").Replace(" ", "");
            filename = filename + "(" + this.File1.PostedFile.FileName +")";
            this.File1.PostedFile.SaveAs(path + "/" + filename + "." + format);        Response.Redirect("default3.aspx");
        }
    }
    ----------------------------------
    web.config
    System.web下
    <httpRuntime maxRequestLength="1024" />
    文件上传最大值。一般4M以下在这改。
    大文件上传一般用其他方法。上传图片就控制上传文件后缀名。我也新手。希望大家批评。
      

  4.   

    另外我的保存路径怎么写啊
    我的是 agent项目文件名
                  -------upload文件夹(保存上传文件)
                  -------manage文件夹
                                      +----add.aspx(上传页面)
    就是说我的保存路径在上传页面上一级
    要怎么写保存路径啊?
    string savePath = Server.MapPath("Upload/);
    这样不行,保存到manage下面去了
      

  5.   

    string savePath = Server.MapPath("~/Upload/"); //这是从项目根目录开始的路径
    string savePath = Server.MapPath("../Upload/");//当前页面的目录的上一层
    string savePath = Server.MapPath("/Upload/");  //从域名的根,开始的目录,通常是 C:\Inetpub\wwwroot
      

  6.   

    string savePath = Server.MapPath("~/Upload/"); //这是从项目根目录开始的路径
    string savePath = Server.MapPath("../Upload/");//当前页面的目录的上一层
    string savePath = Server.MapPath("/Upload/");  //从域名的根,开始的目录,通常是 C:\Inetpub\wwwroot
      

  7.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;/// <summary>
    /// CetFileUpload 的摘要说明
    /// </summary>
    public class CetFileUpload
    {
        private string filepath = string.Empty;//文件相对路径,如果要进行预览,则应加上"~/"
        private string fileurl ="~/";
        private string errmsg="";//上传成功的消息
        private string okmsg="";//上传失败的消息
        //private int maxsize;//最大上传文件大小
        private string[] allowedExtensions ={ ".jpg", ".gif", ".jpeg", ".rar" };//允许上传的文件类型
        public CetFileUpload()
        {
          
           
            
        }   
        /// <summary>
        /// 上传后的文件相对路径
        /// </summary>
        public string FilePath
        {
            get
            {
                return filepath;
            }        set
            {
               
                filepath = value;
            }
        }
        /// <summary>
        /// 上传后的文件URL
        /// </summary>
        public string FileURL
        {
            get
            {
                return fileurl+filepath;
            }        set
            {            fileurl = value;
            }
        }
        /// <summary>
        /// 上传错误时的消息
        /// </summary>
        public string ErrMsg
        {
        get{return errmsg;}
            set{errmsg=value;}
        }
        /// <summary>
        /// 上传成功时的消息
        /// </summary>
        public string OkMsg
        {
            get{return okmsg;} 
            set{okmsg=value;}
        }
        /// <summary>
        /// 文件上传
        /// </summary>
        /// <returns>文件上传到服务器的相对路径</returns>
        public bool UpFile(FileUpload FU)
        {
            if (FU.HasFile)//检查是否有文件
            {
                Boolean fileOK = false;//检查文件是否符合要求
                string path = "FileUpload/";//保存文件的目标位置的相对路径,按实际情况修改即可
                //取得文件的扩展名
                string fileExtension = System.IO.Path.GetExtension(FU.PostedFile.FileName).ToLower();            //新的基于时间的随机文件名
                Random rnd = new Random();
                string newName = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + rnd.Next(1000).ToString();
                //String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg",".rar" };//允许上传的文件类型            for (int i = 0; i < allowedExtensions.Length; i++)
                {
                    if (fileExtension == allowedExtensions[i])
                    {
                        fileOK = true;
                    }
                }
                //如果文件符合要求
                if (fileOK)
                {
                    try
                    {
                        string toPath = System.Web.HttpContext.Current.Server.MapPath("~/" + path) + newName + fileExtension;//最终完全路径,保存文件的目标位置
                        FU.PostedFile.SaveAs(toPath);//保存文件
                        this.OkMsg = "文件上传成功!";                    this.FilePath=path + newName + fileExtension;//返回文件相对路径
                        return true;                }
                    catch (Exception ex)
                    {
                        this.ErrMsg = "上传文件失败!<br>" + ex.ToString();
                        return false;
                        //CetBase.msg("上传失败!");
                    }
                }
                else//如果文件类型错误
                {
                    this.ErrMsg = "文件类型错误!";
                    return false;
                }
            }
            else//如果没有选择文件
            {
                this.ErrMsg = "请选择要上传的文件!";
                return false;        }
        }
    }使用方法:1.添加一个FileUpload和一个Button()即可(注意:按实际情况需修改一下文件的保存目录)。2.Button事件代码://上传照片
        protected void bt_Up_Click(object sender, EventArgs e)
        { 
            CetFileUpload cetFU = new CetFileUpload();
            if (cetFU.UpFile(FU_Pic))//如果上传成功
            {
                tb_Pic.Text = cetFU.FilePath;//这里上传后得到的路径
                 this.PreImg.ImageUrl = cetFU.FileURL;//这是图片预览
            }
            else//如果上传失败
            {
                System.Web.HttpContext.Current.Response.Write("<script language='javascript'>"+cetFU.ErrMsg+"</script>");     //弹出错误提示    }
        }
    这是一个比较方便的图片上传方法。如何在上传之前判断图片大小我也不清楚。