2016-03-22 16 views
1

ヘルプ...サーバPCの指定フォルダに画像をアップロードして背景として表示したいのですが、zkデモで見るとthis link画像をサーバに保存され、そしてここで私はZKのデモから試してみましたコードであり、私は見つけるcanot:このデモでzkフレームワークを使用してサーバの指定されたフォルダに画像をアップロードするには

<zk xmlns="http://www.zkoss.org/2005/zul"> 
    <button label="Upload Image" upload="true,maxsize=300"> 
     <attribute name="onUpload"><![CDATA[ 
      org.zkoss.util.media.Media media = event.getMedia(); 
      if (media instanceof org.zkoss.image.Image) { 
       org.zkoss.zul.Image image = new org.zkoss.zul.Image(); 
       image.setContent(media); 
       image.setParent(pics); 
       Messagebox.show("Not an image: "+media+"sipp "+pics); 
      } else { 
       Messagebox.show("Not an image: "+media, "Error", Messagebox.OK, Messagebox.ERROR); 
       break; 
      } 
     ]]></attribute> 
    </button> 
    <separator /> 
    <vlayout id="pics" height="360px" style="overflow:auto" /> 
</zk> 

答えて

1

、画像をディスクに格納されていません。代わりに、それはちょうどメモリにあったし、しばらくして(またはTomcatを再起動して)有効期限が切れます。

イメージを特定のフォルダに保存する必要がある場合は、Mediaオブジェクトからイメージストリームを取得し、指定したファイルの場所にストリームを書き込む必要があります。ここで

は参照です:http://forum.zkoss.org/question/24566/how-to-save-fileupload-media-to-disk/

+0

桶は確認してくださいだけのために...ありがとう:私が間違っている場合 –

+0

は私を修正するので、私はコードは、この右のようになりますフォルダに格納したい?: FileOutputStream fos = new FileOutputStream(新しいファイル( "E:// source // image" + media.getName())); –

+0

1.出力ストリームにデータを書き込んで閉じなければなりません。 'fos.write(media.getByteData()); fos.close() '; try .. catchブロックでストリームを閉じると、良いコーディング方法です。 2.シングル "/"はOKです。 3.ファイル名の前に "/"が必要なことがあります。例えば"E:/ source/image /"。 4. FileOutputStreamは、フォルダが存在しない場合は自動的にフォルダ(E:/ source/image /)を作成しないことに注意する必要があります。代わりに例外がスローされます。最初に作成するか、作成に役立つ追加のコーディングが必要です。 –

関連する問題