1

FileUpload コントロールを使用して、ユーザーがファイルを SQL データベースにアップロードできるようにしています。

選択したファイルをC#コードでロードするために使用するボタンがあります。

ただし、ファイル サイズが特定のサイズの場合、アップロードは失敗します。サイズが大きすぎる場合はヒットしない C# コードにブレーク ポイントがありますが、ファイル サイズが OK の場合はヒットします。ここにチェックを入れたかったのですが、ブレークポイントにヒットしませんでした!??!

これを実装する最良の方法は何ですか? JavaScript を使用する必要がありますか?

ボタンの背後にある C# コードを以下に示しますが、起動されることはありません。

protected void buttonAddDocumentType_Click(object sender, EventArgs e)
{
    int size = fileUploadDocument.PostedFile.ContentLength;

    //This is where I'd like to perform the file size check 

    byte[] fileData = new byte[size];

    fileUploadDocument.PostedFile.InputStream.Read(fileData, 0, size);

    WebDataAccess.InsertDocument(Int32.Parse(Request.QueryString["ID"].ToString()), Int32.Parse(comboDocumentTypes.SelectedValue), fileUploadDocument.FileName, fileUploadDocument.PostedFile.ContentType,
                fileUploadDocument.FileBytes.Count(), fileData);

    comboDocumentTypes.SelectedIndex = -1;
}

ASP.Net 4.0 を使用しています

前もって感謝します。

4

2 に答える 2

1

Asp.Net には、ファイルのアップロードに上限があります。ファイル アップロード イベントが開始される前に、web.config でこの制限を構成し、この範囲を検証することができます。

このエラーはコードが開始される前に発生するため、コードを使用してこのエラーをキャッチすることはできません。

于 2012-05-21T09:32:58.823 に答える
0

まず、4MB を超える有効なアップロードがある場合は、web.config で maxRequestLength を増やす必要があります。

最大 10MB のファイルを受け入れ、それを 16MB に変更すると、コード内で 10MB を超えるファイルを処理し、16MB を超えるファイルは asp.net ランタイムによって拒否されます。maxRequestLength を非常に大きな数値に変更したくない場合は、巨大なファイルでサーバーを攻撃する可能性があるためです。

<system.web><httpRuntime maxRequestLength="16384" />

を確認できます。

fileImageControl.PostedFile.InputStream.Length 

呼び出す前のプロパティ:

fileImageControl.PostedFile.SaveAs

アップロードされたファイルは常に一時ディレクトリに保存し、最終的な場所に保存する前にいくつかのチェックを実行します。それらを「インターネットからダウンロードした」とマークすることもできるので、Windows はそれに応じてそれらを処理します (ただし、データベースに保存する場合は機能しません)。

于 2012-05-21T10:16:01.830 に答える