这是我的代码:
if (btnfileupload.HasFile)
{
try
{
Int64 _size = 0;
string strsize = null;
int y = 0;
_size = btnfileupload.PostedFile.ContentLength;
strsize = _size.ToString();
if (strsize.Contains("."))
{
y = strsize.IndexOf(".");
strsize = strsize.Substring(0, y - 1);
}
Int64 _accountno = (Int64)Session["aco"];
home h = new home();
h._Account_number = _accountno;
h._FileName = Path.GetFileName(btnfileupload.FileName);
h._file_size = strsize;
h._uploadDate = DateTime.Now;
bool b = h.FileuploadSave(firstfilename);
if (b)
Response.Write("<script> aleart('File Uploaded') </script>");
Fillgrid(null, null);
}
catch (Exception)
{
}
}
btnfileupload.PostedFile.ContentLength
以字节为单位返回大小。问题是如果文件大小为213.562字节,则此属性返回213562,返回大小中没有点(。)。请给我一些返回确切大小的代码。
答案 0 :(得分:1)
strsize = _size.ToString();
if (strsize.Contains("."))
{
y = strsize.IndexOf(".");
strsize = strsize.Substring(0, y - 1);
}
即使ToString
结果包含'.'
作为千位分隔符,代码的那部分看起来也很糟糕,因为它不允许您确定是否以字节结尾,千字节,兆字节或千兆字节。如果你总是想要返回千字节,你只需要除以1024:
sizeKB = _size / 1024; // Rounds down to nearest kilobyte.
另一方面,如果你想根据文件的数量级调整你的单位,你需要包含一些额外的逻辑。
答案 1 :(得分:-1)
我不认为文件大小以字节为单位可以有小数(如果我错了,请更正我),除非它们被转换为KB,MB等
编辑: 正如Stijn所说(。)是一个以字节为单位的分隔符