-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などに変換されない限り、バイト単位のファイルサイズに10進数を含めることはできないと思います(間違っている場合は修正してください)

編集:Stijnが言ったように(。)はバイト単位の区切り文字です

于 2013-09-25T08:31:02.507 に答える