2011-12-09 13 views
1

私はいくつかの効率的な画像ストレージソリューションのためのグーグルで、非常にエキサイティングな行を読んで、あなたは、データベース全体のイメージではなく、イメージパスのみを保存する必要があります。イメージパス(URL)のみをイメージ自体ではなくデータベースに格納する方法はありますか?

私はMVCに基づいたJava Webプロジェクトに取り組んでおり、このトピックについては余りにも知っています。具体的には、Servletから任意の画像ホスティングウェブサイトに画像を直接保存できるかどうかを知りたいのですが、後で使用するためにデータベースの列に保存するリンクをすぐに提供しますか?

答えて

3

イメージ全体ではなくイメージパスのみをデータベースに保存してください。

本当にお勧めです。バイナリデータをデータベースに格納することは、意味的に意味をなさない。あなたはそれを索引付けすることも、それを検索することもできません。それはちょうど "死んだ"データです。このファイルをディスクファイルシステムに直接格納して、その固有の識別子(通常はファイル名のみ)をデータベースに格納することができます。ファイル名はインデックス可能なvarcharにすることができます(したがって、より高速のSELECT ... WHEREが可能になります)。


私はすぐに私に私が将来の使用のための私のデータベース列に格納するリンクを提供し、私のサーブレットから任意の画像ホスティングウェブサイトに直接自分のイメージを保存することができていますかどうかを知りたいですか?

具体的な問題は何かわかりません。バイトを転送することは、ちょうど任意のInputStreamを読んで、それを仲裁判断OutputStreamに書き込んだ後であることに気付くべきです。具体的な質問は、「アップロードされた画像のInputStreamを取得するにはどうすればよいですか」または「OutputStreamをローカルディスクファイルシステムに取得するにはどうすればよいですか」、または「画像にOutputStreamを取得するにはどうすればよいですか?ホスティングウェブサイト?

アップロードされた画像の取得は簡単ですInputStream。すべてのまともなファイルアップロードAPIは、getInputStream()メソッドの種類を提供します。参照How to upload files to server using JSP/Servlet?OutputStreamをローカルディスクファイルシステムのFileにすることも簡単です。その周りにFileOutputStreamを構築するだけです。

File file = File.createTempFile(prefix, suffix, "/path/to/uploads"); 
InputStream input = uploadedFile.getInputStream(); 
OutputStream output = new FileOutputStream(file); 
// Now write input to output. 

String uniqueFileName = file.getName(); 
// Now store filename in DB. 

OutputStreamを別のホストに取得することは、物語の中では別です。どのように接続したいですか? FTPを使用しますか? FTPClient#appendFileStream()を使用してください。またはHTTP(eek)を使用していますか? URLConnection#getOutputStream()またはHttpClientを使用してください。もしあなたが立ち往生すれば、より精細な質問をするべきです。

最後に、この画像をURL(<img src>または直接リクエストなど)で取得するには、この回答をReliable data servingとお読みください。

+0

えええええええええええええええええええええええええええええええんじつきんちゃん、どうもありがとうございました** **:画像をPicasaやFlickrなどに直接アップロードしたい場合はどうしたらいいですか?データベースに格納する.....ここに**は**それは私の愚かな考えだったことを意味します:)ローカルファイルシステムに格納する正しい方法です..ありがとう – Asif

1

ここにはtutorial how to upload a file to a server using servlets/JSPです。次に、Apache Commons IOを使用して、サーバーの一部のディレクトリに保存します。ファイルのパスをデータベースに保存し、次にこのファイルが要求されたときに使用します。

+0

他の方法はありますか?またはより簡単な方法で記述されている方法ですか?実際に私はJavaのWeb開発では新しいです.. – Asif

+1

ようこそJavaのWeb開発。これはかなり良い運動です。私は、多くのWebフレームワークがそのような機能を提供していると信じています。あなたはどちらを使いますか? –

-1

確かに、apache commons apiを使用してイメージをサーバーの指定されたフォルダにアップロードできます。希望する名前を変更することができます。サーブレットを使用して画像をアップロードします。apache commons apiは無料です。適切なドキュメントのApacheサイトを入手します。

+0

ええ、私はそれについて学習を始めています..そしてこれを使って.. – Asif

関連する問題