如何获得上传文件的确切大小?

时间:2013-09-25 08:19:48

标签: c# asp.net

这是我的代码:

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

2 个答案:

答案 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所说(。)是一个以字节为单位的分隔符