csharp: Gets a files formatted size.
12195 ワード
/*
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();
}
}