sql >> データベース >  >> RDS >> Mysql

JavaWebアプリケーションでサーバー上の画像を保存および取得する方法

    Cドライブに書き込む代わりに、サーバーで実行しますが、後で取得してxhtmlファイルに表示するために画像をどこに保存する必要がありますか?

    これは、サーバーの構成をどの程度制御できるかによって異なります。理想的なのは、Tomcatwebappsフォルダーの外部に固定パスを構成することです。例:/var/webapp/upload 。このパスをVM引数または環境変数として設定すると、Webアプリがコードを変更せずにプログラムでパスを取得できるようになります。

    たとえば、VM引数として-Dupload.location=/var/webapp/uploadを指定する場合 、次のようにアップロードを完了することができます:

    Path folder = Paths.get(System.getProperty("upload.location"));
    String filename = FilenameUtils.getBaseName(uploadedFile.getName()); 
    String extension = FilenameUtils.getExtension(uploadedFile.getName());
    Path file = Files.createTempFile(folder, filename + "-", "." + extension);
    
    try (InputStream input = uploadedFile.getInputStream()) {
        Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);
    }
    
    String uploadedFileName = file.getFileName().toString();
    // Now store it in DB.
    

    ファイルを返送する場合、最も理想的なのは、アップロード場所を別の<Context>として追加することです。 Tomcatに。例:

    <Context docBase="/var/webapp/upload" path="/uploads" />
    

    このようにして、http://example.com/uploads/foo-123456から直接アクセスできます。 .ext

    サーバーの構成を完全に制御できない場合は、DBに保存するか、AmazonS3などのサードパーティホストに送信するのが最善の策です。

    関連項目:



    1. SQLiteの表示テーブル

    2. SQL ServerでのDENSE_RANK()のしくみ

    3. PL/SQLでコンマ区切りの文字列を配列に変換します

    4. 失敗した挿入でMySQLの自動インクリメントが増加するのはなぜですか?