
お世話になります。
Javaと、MySQLでウェブアプリケーションを作成していまして、ユーザーがアップロードしたファイルを
どこのディレクトリに保存すればいいか悩んでいますので、教えてください。
ユーザーがログインし、自分のアイコンを設定した場合、
その画像ファイル(jpgなど)はどのフォルダに置いておけばいいのでしょうか?
例えば、imgフォルダにおいた場合、バージョンアップしたプログラムをデプロイすると、
サーバー内のimgフォルダ内のデータはなくなってしまうと思いますので、ユーザーがアップした画像などは
そこに置いてはいけないと思います(バージョン・アップ時に消えてしまいますので)。
「デプロイしても消されない場所に置けばいい」ということでしょうか?
皆さんはどうされていますでしょうか?
よろしくお願い致します。。
No.4ベストアンサー
- 回答日時:
こんにちは。
検索すればいろんなサンプルが出てくると思いますよ。
すごく簡単に書くとしたら
// 画像ファイルのパス
File file = new File ( "/home/・・・・" );
response.setHeader ( "Content-Type", "image/jpeg" );
response.setContentLength ( (int)file.length() );
// 出力と入力
ServletOutputStream out = response.getOutputStream();
BufferedInputStream in = new BufferedInputStream ( new FileInputStream(file) );
int data = 0;
while ( (data = in.read()) != -1 ) {
// 書き出す
out.write(data);
}
in.close();
out.close();
これをサーブレットなりで呼び出してあげれば、任意の場所の画像ファイルを出力します。
(実際の運用ではパラメータでID等を渡してDBからファイル名を取得する)
これを応用すると、必ずサーブレットなりを介さないとファイルには直接アクセスできないため、
認証をさせたり、ダウンロード数を把握したり、期限を設定したりいろいろ出来るようになります。
LancerVII様
有難うございました。
かなり分かってきました!
ありがとうございます。
ベストアンサーとさせて頂きます!!
No.3
- 回答日時:
>「デプロイしても消されない場所に置けばいい」ということでしょうか?
基本的にはそれでよいと思います。
1) 別の HTTPサーバに置く。
2) 別のファイル保管専用のWebアプリの中に置く
3) 任意のファイルシステム上のフォルダやFTPサーバにおいて
Servlet でアクセスする。
この回答への補足
tknakamuri様
ご回答有り難うございます。
1はユーザーが画像をアップしたら、
そのタイミングで、別サーバーに転送するということだと思います
(もちろん、ファイル名が被らないようにリネームしてあげる必要があると思います)。
2と3もだいたいそうことだと思いますが合っているでしょうか。
また、ネットを見ていましたら、データベースに登録し、
それを読み込み表示するということもできるようですね。
DB保存パターンでももうちょっと調べてみたいと思います。
ありがとうございます。
No.2
- 回答日時:
こんにちは。
ディレクトリ名からしたらテンポラリファイルの置き場所と考えるので永続的に利用するファイルを格納するのは避けます。
(例えば他の人がtempディレクトリだから中のファイル消しちゃえとか)
ディレクトリを作成できる権限があるなら任意のディレクトリを作成してそこに格納すれば良いと思います。
>jspから(※1)の場所にアクセスできるのか?
<img src="xxx/xxx.jpg">というパスでは無理ですね。
ROOT配下がドキュメントルートのはずですので。
なので先の回答にある方法で取得します。
jspでもServletでも良いですが、ファイルを直接読み込んで適切なヘッダを設定し書き出してあげれば、直接アクセスできない部分にファイルを保管しても、ブラウザ上で表示が可能です。
この回答への補足
LancerVII様
ご回答有り難うございます。
>ディレクトリを作成できる権限があるなら任意のディレクトリを作成してそこに格納すれば良いと思います。
>jspでもServletでも良いですが、ファイルを直接読み込んで適切なヘッダを設定し
>書き出してあげれば、直接アクセスできない部分にファイルを保管しても、ブラウザ上で表示が可能です。
以下のように理解したのですが、合っていますでしょうか?
任意のディレクトリに画像を保存し、jsp(or Servlet)から読み込む。
その後、ファイルごとにヘッダを指定してあげる。
その後書き出してあげれば、画面に表示される。
理屈はなんとなく分かってきましたが、
実際にコードに書くとなると手が止まってしまいます。
もうちょっとだけアドバイスいただけると嬉しいです
(実際のコードはこんなかんじだよとかございましたら。。。。)。
No.1
- 回答日時:
こんにちは。
通常TomcatとApacheを連携させて実運用すると思いますので、ユーザが登録するファイルなんかは全てApache側に保存しています。
または外から見えない場所に置いて、サーブレット経由でファイルを取得したりしています。
(ダウンロードさせるファイル等)
この回答への補足
LancerVII様
御回答有り難うございます。
作成しているアプリケーションは、jelastic(http://jelastic.com/ja/java-paas)とう
サービスを利用しています。
このサービスの環境作成で、tomcatをアプリサーバーとして作成していますので、アパッチとの連携はしておりません。
(説明が足りず申し訳ありませんでした)
現在のディレクトリ構成を確認したら以下のようになっていました。
/root
|-bin
|-conf
|-lib
|-logs
|-temp (※1)
|-webapps
|-ROOT
|-META-INF
|-WEB-INF
|-css
|-img
|-js
|-jsp
|-tmp
|-index.jsp
この場合は(※1)のtempに置くのがいいのでしょうか?
しかし、jspから(※1)の場所にアクセスできるのか?という疑問が生まれてしまいます。
よろしければアドバイスをお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- グループウェア Outlookのpstファイルが勝手に消える 1 2023/06/12 09:51
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- Windows 10 ネットからファイルをデスクトップにダウンロードする際、既存のファイルの並びが崩れてしまう 4 2022/04/19 08:20
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
ExcelVBAでカレントディレクト...
-
絶対パスの絶対て英語で何でし...
-
「UNCパスはサポートされません...
-
windows.hがincludeされない
-
フルパスから最後のディレクト...
-
fopenで別ディレクトリにファイ...
-
FTPでputすると空ファイルが出...
-
ディレクトリの指定
-
Ubuntu テキストファイルをどこ...
-
EXCELでダイアログボックスを開...
-
ファイルダイアログのカレント...
-
マイクラでPythonのプログラミ...
-
delphi5でのディレクトリ内ファ...
-
Excel2013 FSO.getAbsolutePath...
-
ファイルやディレクトリの存在...
-
options +indexesで文字化け
-
C++でOpenCV コンパイルでエラー
-
C#でカレントディレクトリの取...
-
ThisWorkbook.Pathについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
「UNCパスはサポートされません...
-
絶対パスの絶対て英語で何でし...
-
ExcelVBAでカレントディレクト...
-
fopenで別ディレクトリにファイ...
-
windows.hがincludeされない
-
ファイルやディレクトリの存在...
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
C言語を用いたファイルの一括削...
-
ExcelVBA サーバーの(共有フォ...
-
GetPrivateProfileStringでini...
-
マイクラでPythonのプログラミ...
-
webアプリケーションでの画像フ...
-
Ubuntu テキストファイルをどこ...
-
ファイルダイアログのカレント...
-
新規作成ファイルパスが有効か...
-
FindFirstFileについて
おすすめ情報