0

これまで、画像をwebappディレクトリに保存し、そのパスをデータベースに保存していました。

しかし、新しいwarファイルをデプロイした場合に古いfilesフォルダーが削除されないように、Webアプリの外部にイメージを保存しようとしています。

以下のコードから、画像ファイルはWebアプリケーションの外部の指定されたフォルダーに正しく保存されていますが、その画像をjspページに取得する方法がわかりません。

このようにやってみました

<img src="www.myproject.com/struts2project/files/smile.jpg/>"

しかし、これは間違っています。画像がjspページに表示されません。

以下のコードは、画像を絶対パスにアップロードするために正常に機能していますが、私の問題はその画像を取得する方法ですか?

   `fileSystemPath= "/files"; 
         try{                
             File destFile  = new File(fileSystemPath, thempicFileName);
                 FileUtils.copyFile(thempic, destFile);
                 String path=fileSystemPath+"/"+thempicFileName; 
                 theme=dao.getThemeById(themId); 
                 theme.setThemeScreenshot(path);
                 theme.setThemeName(theme.getThemeName());
                 theme.setThemeCaption(theme.getThemeCaption());
                 dao.saveOrUpdateTheme(theme);

         }catch(IOException e){
            e.printStackTrace();
            return INPUT;
         }`

親切に私を助けてください...

必要なものが明確になっていることを願っています。そうでない場合はお知らせください。別の方法で説明しようと思います。

4

2 に答える 2

1

あなたが言うように 。。。この質問はあなたがする必要があることを説明します。あなたが知る必要があるのは、Struts2でこれを最もよく達成する方法だと思います。これが何が起こっているのかです。

あなたのタグで:

そのURLはStruts2アプリケーションにルーティングされています。正しい?コンテキストは「struts2project」です。
参照された質問によって提供される解決策の1つは、静的要求を処理するTomcatの機能を使用し、画像を保持するこの他のドキュメントルートについて知るようにtomcatを構成することです。これは素晴らしい解決策だと思います。

struts2内に保持したい場合は、画像へのInputStreamを取得し、Struts2StreamResult結果タイプを使用する専用の「他の場所からの画像ストリーミング」アクションを使用するのが最善のオプションだと思います。この結果タイプを使用すると、アドホックInputStreamを指定できます。また、適切なヘッダーを設定するのにも役立ちます。そのドキュメントページのヘッダー値はファイルをダウンロードするためのものであるため、これらの値は必要ありません。彼らはブラウザに画像の名前を付けて保存ダイアログを開くように強制するだろうと私は思います。

于 2012-12-17T15:30:05.340 に答える
0

すでに絶対パスを使用しています。Web アプリケーションの外部の場所を使用してください。

String destinationDir = "/path/to/my/directory/";
File file = new File(destinationDir + item.getName());
于 2012-12-17T14:33:18.743 に答える