2012-04-14 15 views
0

これは、Windows 7プラットフォーム上のローカルJavaサーバーを使用したファイルアップロード機能のテストに関する質問です。問題はMarkoの入力から進化したので、私はそれを編集したので、同じ課題に挑戦する人は進化の詳細に時間を無駄にせず、早く結論に達することができます。Javaアプリケーションコンテキスト外からの画像の表示。

WAR構造の外のフォルダにファイルをアップロードしてそこから正しく読み込むことが課題でした。たとえば、画像をc:/tmp/にアップロードして、画像<img src="c:/tmp/test.jpg" />を表示する確認ページにリダイレクトします。アップロードは機能しましたが、画像は表示されませんでした。ローカルホストのブラウザは、c:を使用してローカルディスク構造からのロードを拒否するため、Markoの入力に基づいて、これは意味があります。たぶんこれらは、デフォルトのパスを設定できないファイル入力コントロールのものと同様のセキュリティ上の考慮事項です...

次のタグは、ローカルに作成された.htmlファイルで動作しますが、jspに貼り付けると動作しません。そして違いは、ブラウザがlocalhostを使用してjspに到達することです。

<img src="c:/tmp/test.jpg" /> 

ソリューション

私はマルコの答えはかなり何をすべきかを定義していることと思います。私はそのアプローチには行かなかったが、明らかにそれを行うより良い方法であり、私はそれを答えとして受け入れる。ありがとう、マルコ!

Webサーバーのインストールを気にせず、ハックをして喜んで生きている人にとっては、ここで私がしたことがあります。この場合も、サーバーに展開する前にそのフォルダを消去することを覚えておく必要があるため、WAR構造にファイルをアップロードする必要はありませんでした。しかし、そのアップロードフォルダはまだアクセス可能でなければならないので、別のダミープロジェクトを作成し、そのアップロードフォルダをWebContentの下に置くだけです。これは私のローカルテストの目的のために働く。唯一の厄介な点は、ファイルをアップロードした後、EclipseでダミープロジェクトのWebContentを更新する必要があることです。

config.properties 

#for uploading files 
fileUploadDirectory=C:/javawork/modelsite/tmp/WebContent 

#for building html links 
publicFileServicePrefix=http://localhost:8080/tmp 

<img src="http://localhost:8080/tmp/test.jpg" /> // this works - tmp is the name of my dummy project. 
+0

'' **この** PCのローカルファイルシステム上の(架空の)場所を指し示す**ここでは、**ブラウザによって展開され、ロードされます。 –

答えて

1

あなたは文字通りブラウザ(あなたは「vieewソース」を介してアクセスする1)に行くHTMLを引用している場合は、このは、Javaとは何の関係もありません。ブラウザは、これらのリンクを解釈する人です。読み込みに失敗した場合は、ブラウザ/ファイルシステムに問題があります。

UPDATE

は、あなたの追加の診断の結果によると、私はそれがインターネットのURLからHTMLファイルから参照されている場合、ブラウザは(賢明に!)ローカルディスクから何かをロードすることを拒否すると結論しますそのURLがlocalhostであっても

UPDATE 2

は(、無関係な削除済み)

UPDATE 3

サーバーにアップロードされたファイルを扱うしかし、間違いなくあなたのソリューションのように見えることはないだろう - ファイルはサーバのローカルファイルシステムにあり、クライアントのものではありません。このようなことは、Apache HTTPサーバーレベルで処理できます。静的コンテンツのURLセクションを予約し、静的コンテンツを提供するベースディレクトリでApacheを構成します。サーバをローカルで実行しても、テストするマシンと同じマシンでも、ネットワークインタフェースを経由する必要があります。

+0

私はうまく動作する私のテストhtmlファイルを使用して引用しています。私はそれらの2つの行を私のjspと無運に貼り付けます。ページソースには、これらの2行が含まれています。それらは私が引用したものと同じで、イメージは表示されません。 Chromeは何も表示せず、IEは「壊れた画像」のアイコンを表示します。私はこれがJavaの問題を暗示しているわけではないが、文脈と関係があるかもしれないと理解している。ここで私のURLは 'http:// localhost:8080/SiteAdmin/file?fileId = 1'です。 – jacekn

+0

サーバーから受け取ったHTMLをディスク上の通常のHTMLファイルに保存し、そのファイルをブラウザで開くと、作品ですか? –

+0

試してみてください。保存の一部として、ブラウザはファイルディレクトリを作成し、jsファイルとcssファイルと共に画像をダウンロードします。 htmはちょっと操作されていますが、それは予想通りです。イメージパスは、そのローカルコピーに設定されます。 htmファイルを開くと、画像は表示されません。 – jacekn