1

非常に長い名前のファイルをアップロードすると、この問題が発生しました。データベース フィールドが 50 文字にしか設定されていませんでした。それ以来、データベース フィールドの長さを増やしましたが、アップロードする前にファイル名の長さを確認する方法が必要です。以下は私のコードです。検証では、文字長として「85」が返されます。そして、アップロードするすべての異なるファイルに対して同じカウントを返します (ファイル名の長さが 85 のものはありません)。

    <cfscript>
    missing_info = "<p>There was a slight problem with your submission. The following are required or invalid:</p><ul>";
    // Check the length of the file name for our database field
    if ( len(Form["ResumeFile1"]) gt 100 )
    {
    missing_info = missing_info & "<li>'Resume File 1' is invalid. Character length must be less than 100. Current count is " & len(Form["ResumeFile1"]) & ".</li>";
    validation_error = true;
    ResumeFileInvalidMarker  = true;
    }
    </cfscript>

誰でもこれで何か問題があると思いますか?

ありがとう!

4

2 に答える 2

3

http://www.cfquickdocs.com/cf9/#cffile.upload

ファイルをアップロードした後、変数「clientFileName」は、ファイル拡張子なしで、アップロードされたファイルの名前を示します。

アップロードする前にファイル名を読み取る唯一の方法は、JavaScript を使用してファイル フィールドの値 (ファイル パス) を読み取って解析することです。

于 2012-06-22T18:14:05.760 に答える
2

質問の文言を簡単に説明します。コードが実行されるまでに、ファイルのアップロードはすでに行われています。ファイルは ColdFusion サーバーの一時ディレクトリにあり、ファイルのアップロードに関連するフォーム フィールドには、そのファイルの一時ファイル名が含まれています。ファイルが指定されているかどうかを確認する以外に、そのファイルに対して直接何もしないでください。組み込みのセキュリティを回避することになります。

アクション(または同等の udfcffile )でタグを使用して、選択したフォルダーに一時ファイルを移動します。その時点で、多くの情報を含む構造にアクセスできます。通常、アプリケーションの一時ディレクトリに「アップロード」します。これは、セキュリティのために webroot の外にある必要があります。upload

この時点で、ファイル名の長さ、ファイルの種類、ファイルのサイズなど、ファイルに対して検証を行い、チェックに失敗した場合はファイルを削除します。すべてのチェックに合格した場合は、webroot 内にある可能性がある最終的な宛先に移動します。

あなたの場合、clientFile拡張子を含む元のファイル名である cffile 構造要素を確認する必要があります(拡張子が存在する必要はなく、任意の長さにできるため、確認する必要があります)。

于 2012-06-22T18:56:13.603 に答える