-3

这是我的代码:

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,返回大小中没有点 (.)。请给我返回确切大小的代码。

4

2 回答 2

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.

另一方面,如果您想根据文件的数量级调整您的单位,则需要包含一些额外的逻辑。

于 2013-09-25T08:26:28.750 回答
-1

我认为以字节为单位的文件大小不能有小数(如果我错了,请纠正我),除非它们被转换为 KB、MB 等

编辑:正如 Stijn 所说, (.) 是以字节为单位的分隔符

于 2013-09-25T08:31:02.507 回答