1

私は Java EE アプリケーションを作成しています。URL から画像を取得して、それをリソース フォルダーに保存しようとしています (AJAX 要求を介して)。私の問題は、サーバーを再起動しないと、サーバーにロードされていないため、この画像を表示できないことです。

Tomcat 7、Spring、Hibernate、Primeface を使用しています。

これがmyimageを保存するための私のクラスです

public class ImageSaver {
    final static int SIZE=1024;

    public static void fileUrl(String fAddress, String localFileName, String destinationDir) {
        OutputStream outStream = null;
        URLConnection  uCon = null;

        InputStream is = null;
        try {
            URL url = new URL(fAddress);
            byte[] buf;
            int byteRead;
            int byteWritten=0;
            outStream = new BufferedOutputStream(new FileOutputStream(destinationDir+"\\"+localFileName));
            uCon = url.openConnection();
            is = uCon.getInputStream();
            buf = new byte[SIZE];
            while ((byteRead = is.read(buf)) != -1) {
                outStream.write(buf, 0, byteRead);
                byteWritten += byteRead;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                is.close();
                outStream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void fileDownload(String fAddress,String fileName, String destinationDir){
        int slashIndex =fAddress.lastIndexOf('/');
        int periodIndex =fAddress.lastIndexOf('.');
        //String fileName=fAddress.substring(slashIndex + 1);
        if (periodIndex >=1 &&  slashIndex >= 0 && slashIndex < fAddress.length()-1){
        }
        else{
            System.err.println("path or file name.");
        }
    }

}

そして私が関数を呼び出す方法:

ImageSaver.fileDownload("http://www.mywebsite.com/myImage.jpg","myImage.jpg", "C:\\Users\\MyProject\\src\\main\\webapp\\resources\\images");

再起動せずに、アップロードしたイメージをサーバーに自動的にロードするにはどうすればよいですか? アップロード フォルダを構成できるファイルはどれですか? そしてどうやって ?

4

1 に答える 1

3

動的に取得した画像を webapp のフォルダーに書き込むべきではありません。これにより、さまざまな問題が発生する可能性があります。代わりに、アプリケーション サーバーのルート ディレクトリ以外のフォルダーにそれらを保存し、これらのリソースを提供するダウンロード サーブレットを作成します。

そうしないと危険なのは、外部ソースからいくつかの jsp ファイルを取得し、それらをアプリサーバーに保存し、ダウンロード時にアプリサーバーがそれをサーバー側で喜んで実行することです。

webapp のディレクトリが webapp に書き込み不可であると仮定します。これにより、バックアップと更新も容易になります。更新をインストールするか、別のサーバーに移行する必要があると想像してください。サーバー上のアプリケーションは、*.war ファイルに部分的にしか含まれていません。明示的なリソース ディレクトリがある場合は、これを個別にバックアップできます (またはネットワーク共有ドライブに配置できます)。

于 2013-03-21T10:23:02.800 に答える