2017-09-11 15 views
0

私はcoldfusion 2016アプリ(ウェブサイト)のcffileタグを使用して、ユーザーからサーバーに画像をアップロードしています。cffileの代わりにcoldfusion core java

私はcffileの使用をやめ、より効率的であるために基礎となるjavaを使用するように指示しました。

i was given this code which shows how to take a dir of files and zip them with the core java。 しかし私のニーズにそれを使用するには十分スマートではありませんでした。

シンプルなPOSTを受信し、そのファイルをサーバーの特定のディレクトリに移動するには、ページが必要です。通常、ウェブサイトの「アクション」ページに私が使用します。

cffile action="upload" filefield="FieldNameFromPostedForm" destination="MyDirectoryOnServer" 

私はのようないくつかの魔法で終わることができますので、誰には、ColdFusionのボンネットの下に表示させる方向に私を指すことができます。

FileOutputStream = createobject("java", "java.io.FileOutputStream"); 

の機能です。

ありがとうございました!

進捗レポート:
私は、私が言ったことに近いです。ファイルがサーバーに書き込まれますが、私はその後ので、私はタイプの返されたエラーを取得する私のテストアップロード」にjava.io.IOExceptionで画像の後

<cfscript> 
function bj_script(source, server_dest_Path) { 
try { 
    FileOutputStream = createobject("java", "java.io.FileOutputStream"); 
    BufferedOutputStream = createobject("java", "java.io.BufferedOutputStream"); 
    FileInputStream = createobject("java", "java.io.FileInputStream"); 
    BufferedInputStream = createobject("java","java.io.BufferedInputStream"); 

    the_file = createobject("java","java.io.File"); 
    the_file.init(source); 

    FileInputStream.init(the_file); 
    BufferedInputStream.init(FileInputStream); 
    FileOutputStream.init(server_dest_Path); 
    BufferedOutputStream.init(FileOutputStream); 

    thisbyte = 0; 
    while (thisbyte neq -1){ 
     thisbyte = BufferedInputStream.read(); 
     if (thisbyte neq -1){ 
      BufferedOutputStream.write(thisbyte); 
     } 
    } 

    FileOutputStream.close(); 
    BufferedOutputStream.close(); 
    return true; 
} 
catch(Any exception) { 
    return exception; 
} 
} 
</cfscript> 

<form method="post" enctype="multipart/form-data"> 
<input type="File" name="test"><br> 
<input type="Submit"><br> 
</form> 

<cfif request_method is "post"> 
<cfset ccc = bj_script(form.test, "C:\inetpub\wwwroot\mywebsite\temp_img\blah.jpg") /> 
</cfif> 

パズルの一片をしないのですエラーを取得しています"メッセージが" Stream Closed "の場合
whileループを間違って実行する必要があります。どのようなJavaばかは私に何を変更するか教えてくれる?

+1

あなたのGoogle検索文字列は 'javaファイルをサーバーにアップロードする 'です。 –

+2

どのようにJavaがより効率的であるか興味がありますか?私はいくつかの分野について考えることができますが、具体的なシナリオです。たとえば、非常に大きなファイルをメモリにロードして文字列操作を行う必要がある場合、ColdFusionはファイル全体を読み取ります。あるフォルダから別のフォルダにコピーするだけの場合は、CFが同じファイルストリームを使用していて、読み込み時にバイトを書き出すと仮定します。 Javaのバージョンが実際に何かを改善していることを確認するためのベンチマークがありますか? –

+0

アップロードされて処理されている10枚の画像セットの粗ストップウォッチタイマー以外のベンチマークはありません。私の上司に私が間違っていることを伝えている別のコーダーの古い話で、今私はそれを変えなければなりません。 –

答えて

2

ここ数年前、ColdFusionのResultSetを使ってほぼ正確なことを行うために書いたことがあります。 CFからJavaクラスに接続してファイルを書き込む方法に関する適切な入門書として役立つはずです。

https://cfprimer.blogspot.com/2009/01/coldfusion-fast-query-to-file-export.html

それがより効率的であるので、私は、cffileタグの使用を停止し、代わりに基本的なJavaの使用を開始するよう命じられています。

CFFileもファイルを書き込むために基底のJavaを使用していることを指摘する価値はありますか?

+0

CFFileは基盤となるJavaも使用しています。正に私の上司に言いましたが、それは持っていませんでした。 –

関連する問題