csharp: Gets a files formatted size.

  /*
            ASP.NET 默认上传文件是4M ,可以修改服务配置.. 

           <system.web>
           <!-- 指示 ASP.NET 支持的最大文件上载大小。
           该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。
           指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。最大为:2097151 KB
           此处改为40M大小的文件上传限制。
           -->
           <httpRuntime maxRequestLength = "2097151" useFullyQualifiedRedirectUrl="true"/>
           </system.web>
            */

        /// <summary>
        /// Gets a files formatted size.
        /// </summary>
        /// <param name="file">The file to return size of.</param>
        /// <returns></returns>
        //public static string GetFileSize(this FileInfo file)
        //{
        //    try
        //    {
        //        //determine all file sizes
        //        double sizeinbytes = file.Length;
        //        double sizeinkbytes = Math.Round((sizeinbytes / 1024));
        //        double sizeinmbytes = Math.Round((sizeinkbytes / 1024));
        //        double sizeingbytes = Math.Round((sizeinmbytes / 1024));
        //        if (sizeingbytes > 1)
        //            return string.Format("{0} GB", sizeingbytes); //returns size in gigabytes
        //        else if (sizeinmbytes > 1)
        //            return string.Format("{0} MB", sizeinmbytes); //returns size in megabytes if less than one gigabyte
        //        else if (sizeinkbytes > 1)
        //            return string.Format("{0} KB", sizeinkbytes); //returns size in kilabytes if less than one megabyte
        //        else
        //            return string.Format("{0} B", sizeinbytes); //returns size in bytes if less than one kilabyte
        //    }
        //    catch { return "Error Getting Size"; } //catches any possible error and just returns error getting size
        //}

        /// <summary>
        /// Gets a files formatted size.
        /// 获得文件大小
        /// 涂聚文
        /// 
        /// Geovin Du
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public string GetFileSize(double file)
        {
            try
            {
                //1.
                double byteSize = Math.Round(file / 1024 * 100) * 0.01;
                string suffix = "KB";
                if (byteSize > 1000)
                {
                    byteSize = Math.Round(byteSize * .001 * 100) * .01;
                    suffix = "MB";
                }
                double byteGSize = Math.Round(byteSize / 1024 * 100) * 0.01;
                if (byteGSize > 1000)
                {
                    byteGSize = Math.Round(byteGSize * .001 * 100) * .01;
                    suffix = "GB";
                }
                return byteSize.ToString() + suffix;

                //2.
                //determine all file sizes
                //double sizeinbytes = file;
                //double sizeinkbytes = Math.Round((sizeinbytes / 1024));
                //double sizeinmbytes = Math.Round((sizeinkbytes / 1024));
                //double sizeingbytes = Math.Round((sizeinmbytes / 1024));
                //if (sizeingbytes > 1)
                //    return string.Format("{0:0.00} GB", sizeingbytes); //returns size in gigabytes
                //else if (sizeinmbytes > 1)
                //    return string.Format("{0:0.00} MB", sizeinmbytes); //returns size in megabytes if less than one gigabyte
                //else if (sizeinkbytes > 1)
                //    return string.Format("{0:0.00} KB", sizeinkbytes); //returns size in kilabytes if less than one megabyte
                //else
                //    return string.Format("{0} B", sizeinbytes); //returns size in bytes if less than one kilabyte
            }
            catch 
            { 
                return "Error Getting Size"; 
            } //catches any possible error and just returns error getting size
        }

  

  /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            int FileNum = 0;
            // Clear the BulletedList.
            BulletedList1.Items.Clear();
            string filepath = Server.MapPath("./") + "UploadFile";
            string filename = DateTime.Now.ToString("yyyyMMddHHmmss");
            HttpFileCollection hfc = Request.Files;
            //1
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];
                if (hfc[i].ContentLength > 0)
                {
                    hpf.SaveAs(filepath + "/" + filename + System.IO.Path.GetFileName(hpf.FileName));
                    FileNum++;
                    //uploadFiles.SaveAs(filepath + "/" + filename + System.IO.Path.GetFileName(hpf.FileName));
                    FileUpload1.SaveAs(filepath + "/" + filename + System.IO.Path.GetFileName(hpf.FileName));
                    FileUpload2.SaveAs(filepath + "/" + filename + System.IO.Path.GetFileName(hpf.FileName));
                }
                else
                {
                    Response.Write("<script>alert('请选择你要上传的文件!')</script>");
                    //跳出for循环
                    i = hfc.Count;
                    break;
                }
            }
            Response.Write("<script>alert('上传成功!')</script>");
            Response.Write("共上传成功的文件个数为:" + FileNum + "个");
            FileNum = 0;

            // Check to see if at least one file was specified.
            //if (FileUpload1.HasFile | FileUpload2.HasFile)
            //{
            //    Label1.Text = "The file collection consists of:";

            //    // Get the HttpFileCollection.
            //    //HttpFileCollection hfc = Request.Files;
            //    foreach (String h in hfc.AllKeys)
            //    {
            //        // Add an item to the BulletedList if a file
            //        // was specified for the corresponding control.
            //        if (hfc[h].ContentLength > 0)
            //        {   
            //            BulletedList1.Items.Add(Server.HtmlEncode(hfc[h].FileName));
            //        }


            //    }
            //    for (int i = 0; i < hfc.Count; i++)
            //    {
            //        filename = DateTime.Now.ToString("yyyyMMddHHmmss");
            //        HttpPostedFile hpf = hfc[i];
            //        hpf.SaveAs(filepath + "/" + filename + System.IO.Path.GetFileName(hpf.FileName));
            //    }
            //}
            //else
            //{
            //    Label1.Text = "You did not specify any files to upload or "+ hfc.Count.ToString()+
            //        "the file(s) could not be found.";
            //}
        }

  

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            this.AddFile.Click += new System.EventHandler(this.AddFile_Click);
            this.RemvFile.Click += new System.EventHandler(this.RemvFile_Click);
            this.Upload.ServerClick += new System.EventHandler(this.Upload_ServerClick);
        }


        /// <summary>
        /// AddFile will add the path of the client side file that is currently in the PostedFile
        /// property of the HttpInputFile control to the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddFile_Click(object sender, System.EventArgs e)
        {
            if (Page.IsPostBack == true)
            {
                hif.Add(FindFile);
                double size = FindFile.PostedFile.ContentLength;
                string filesize = GetFileSize(size);
                ListBox1.Items.Add(FindFile.PostedFile.FileName + "  文件大小:" + filesize);
               // FindFile.PostedFile.ContentLength.ToString();
            }
            else
            {

            }
        }

        /// <summary>
        /// RemvFile will remove the currently selected file from the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RemvFile_Click(object sender, System.EventArgs e)
        {
            if (ListBox1.Items.Count != 0)
            {

                hif.RemoveAt(ListBox1.SelectedIndex);
                ListBox1.Items.Remove(ListBox1.SelectedItem.Text);
            }

        }

        /// <summary>
        /// Upload_ServerClick is the server side script that will upload the files to the web server
        /// by looping through the files in the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Upload_ServerClick(object sender, System.EventArgs e)
        {
            string baseLocation = Server.MapPath("/upload/"); 
            string status = "";


            if ((ListBox1.Items.Count == 0) && (filesUploaded == 0))
            {
                Label1.Text = "Error - a file name must be specified.";
                return;

            }
            else
            {
                foreach (System.Web.UI.HtmlControls.HtmlInputFile HIF in hif)
                {
                    try
                    {
                        string fn = System.IO.Path.GetFileName(HIF.PostedFile.FileName);
                        HIF.PostedFile.SaveAs(baseLocation + fn);
                        filesUploaded++;
                        status += fn + "<br>";
                    }
                    catch (Exception err)
                    {
                        Label1.Text = "Error saving file " + baseLocation + "<br>" + err.ToString();
                    }
                }

                if (filesUploaded == hif.Count)
                {
                    Label1.Text = "These " + filesUploaded + " file(s) were uploaded:<br>" + status;
                }
                hif.Clear();
                ListBox1.Items.Clear();
            }

        }

  

posted @ 2015-04-20 17:55  ®Geovin Du Dream Park™  阅读(359)  评论(0编辑  收藏  举报