0

CFFILE Action="Upload" のファイルサイズ (100 MB としましょう) を制限する共有ホスティング サーバーを使用しています。私のコードはすべてのアップロードの 99% で機能しますが、100 MB を超えるファイルでは、使用することをお勧めします。 FTP。

CFFTP が機能するには、ローカル パス名 (つまり、「c:\myFiles\fileToUpload.mpg」) が必要ですが、フォーム フィールドをダンプする場合、CFFORM ENCYTYPE="multipart/form-data" を使用しているため、サーバー上に .tmp としてリストされます。ENCTYPE の指定を削除すると、ローカル パス名が取得されます。

私の目標は、ファイルサイズが 100 MB をシームレスに超えた場合に CFFTP に切り替えることです。ENCTYPE が "multipart/form-data" に設定されている場合、ローカル パス名を抽出することは可能ですか?

または、CFFTP と CFFILE をこのように機能させる他の方法はありますか?

これは、私がどのように動作するかを抽象化したものです。

<!--- perform actions --->
<cfif isdefined("FORM.fileToUpload")>
    <cfif fileSizeInMB(FORM.fileToUpload) < 100>
        <cffile action="upload" blah blah>
    <cfelse>
        <cfftp action="putfile" blah blah>
    </cfif>
</cfif>

<!--- show page --->
<cfform action="#CGI.SCRIPT_NAME#" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" />
    <input type="submit" />
</cfform>

どんな助けでも大歓迎です!

4

2 に答える 2

1

ColdFusion のドキュメントによると、CFFTP タグは「... ColdFusion サーバーと FTP サーバーの間でファイルを移動する」ために使用されます。- このタグでは、クライアントのハード ドライブから読み取ってサーバーにアップロードすることはできません。クライアントからファイルを転送する唯一の方法は、CFFILE を使用することです。

私の状況では、アップロードするファイルのサイズに制限があることをクライアントに知らせる必要があります。Dan の提案に従って、100 MB を超えるすべてのファイルをアップロードするには、Firezilla を使用することをお勧めします。

ご回答いただきありがとうございます。

于 2013-02-01T13:48:46.843 に答える
0

いくつかの理由であなたは運が悪いと思います。まず、ユーザーの明示的な同意なしにローカルファイルパスを取得することはありません。これを行うために作成できるアクティブなXコントロールがありますが、ブラウザはユーザーにそれを許可するかどうかを尋ねます。ありそうもないと考えてください。

次に、cfftpは、ftpが有効になっているマシンでのみ機能します。ほとんどのパソコンはそうではありません。それらはあなたが克服するためのセキュリティ対策を持っているかもしれません。

ファイルが大きすぎる場合にできる最善のことは、ユーザーにそのことを示すメッセージを表示することだと思います。このメッセージには、Filezillaなどのftpクライアントに関する情報と、サーバーの所有者が一般の人々にでファイルのftpを許可することを前提として、サーバーにファイルをftpで送信する方法の説明が含まれます。

于 2013-02-01T03:10:50.170 に答える