2012-01-04 11 views
0

私はJava Webサービス(Tomcat上)を使用しています。それはローカルPC上にあるため、\:私はDとしてパスを指定ウェブサービスアップロード画像URL

public String uploadPicture( long xId, 
           int  pictureIndex, 
           String imageData) 
{ 
    File imageFile = new File(new String("D:\\" + xId + "_" + pictureIndex)); 

    try 
    { 
     FileOutputStream fos    = new FileOutputStream(imageFile); 
     byte[]    encodedImage = Base64.decode(imageData); 

     fos.write(encodedImage); 
     fos.close(); 
     return imageFile.getPath(); 
    } 
    catch(FileNotFoundException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch(Base64DecodingException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch(IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 
  1. : 私は画像のアップロードを処理する次のコードを持っています。 しかし、私はそれを展開するサーバー上のパスを更新する必要があります - それから〜picDirに変更する必要がありますか?そんな感じ?

  2. WebサービスのURL:http://192.168.0.11:8080/XWebService/services/XWebService は、画像を取得するためのURLがどうあるべきかの代わりに192.168.0.11 のドメインに更新されるのですか? (画像フォルダがある場合、例えば:〜\ picDir)

答えて

2
  1. ターゲット・サーバーは、Linux/Unixのを実行する場合は、適切なパスに/ usr /共有/ myappのようなものでなければなりません。 '〜\'は完全に間違っています。あなたが現在のユーザーのホームフォルダを指し示す '〜/'を意味すると思います。異なるホームディレクトリを持つ異なるユーザーとしてWebサーバーを実行する可能性があるので、これは避けるべきです。通常、各環境(デベロッパーマシン、デモ、ライブサーバー)には、アプリケーションが必要とする構成とデータを格納する場所が必要です。
  2. 写真のファイルシステムの場所は、写真を配置するURLとは関係ありません。これは、アプリケーションとアプリケーション自体を実行するWebサーバー(Tomcat、Jetty、JBossなど)によって異なります。たとえば、ドメインwww.myapp.comを/ var/lib/tomcat6/webapps/myapp /ディレクトリにマップするようにTomcatサーバーを構成できます。イメージを公開するサーブレットは、1. =/usr/share/myapp/picDirに記述されている構成ディレクトリからイメージを取得する可能性があります。/pictures?picId = 1を介してサーブレットにアクセスできる場合は、www.myapp.com/pictures?picId=1にあります。ただし、* .warファイル内の静的イメージにブラウザからアクセスする場合は、*。warファイルのルートディレクトリに配置します。

    1. を選択してください(と教えて)、アプリケーション・サーバー
    2. は、すべての環境のためにいくつかの設定ディレクトリを使用し、それ
    3. は、サーバーの設定を参照してくださいすることができるようにサーバーを設定します。要約すると

    目的のドメイン用

* .warファイルのコンテキストと、ファイル自体の構成方法について詳しくお読みください。ローカルマシン希望サーブレットで

  1. が下に配置されています:http://localhost:8080/myapp/utils/myservlet.html
  2. アプリがmyapp.war
  3. としてパックされているとするとTomcatのの例に

    をURLとコンテキストを理解

  4. リモートTomcatはIP 2.2.2.2を持ち、ポート8080で稼動しています

リモートTomcatにwebappsディレクトリ(/ var/lib/tomcat6/webapps)にmyapp.warをデプロイすると、展開され、http://2.2.2.2:8080/myapp/utils/myservlet.htmlの下にサーブレットが表示されます。 Tomcatのサーバーにアプリケーションを設定することによって。xmlを使用すると、ドメイン名を追加してコンテキストと呼ばれる不要な「myapp」部分を減らすことができ、実質的にURLをhttp://www.myapp.com/utils/myservlet.htmlという形で残します。これはプロダクション環境で必要なものです。このトピックは、Tomcatのドキュメントで説明されています。参照してください。あなたは、サーバーから任意のファイルを保存したり、取得したい場合

Webアプリケーション からファイル・システム・リソースへのアクセスは、クライアント(Webブラウザ)が基本となるディスク構造につ​​いての考えを持っていないことを心に留めておいてください。 - 要求からいくつかのバイトの内容を取得し、サーバーのファイルシステム上のファイルとして保存し

  • アップロード:ブラウザは次のようにサーバによって処理することができます(アップロード/ダウンロードの面で)要求 - 応答通信パターンを使用しています
  • ダウンロード - サーバーファイルシステムからいくつかのバイトの内容を読んで、あなたはどちらの場合も、サーバーファイルシステムを見ることができるように応答

としてそれをストリームは、tの内部関心事であります彼はサーバーそのもの。どこにでも保存できます。どの位置からでもバイトを読み取ることができます。そのため、MYAPP_CONF(コメントに記載されている)を使用して、あらかじめ定義されたディレクトリからこれらのファイルを保存して読み込むことが良い理由です。

+0

私はtomcatサーバーを使用しています。静止画ではなく、ユーザーが画像をアップロードしています。 – Yoav

+0

素晴らしいことに、私たちが通常行っていることは、MYAPP_CONF =/usr/share/tomcat6/myappという設定ディレクトリを指す環境変数を作成することです。あなたが開発しているときは、あなたのPCのMYAPP_CONFを 'D:\'にしてください。 picDirをそのディレクトリの下に置きます。そうすれば、開発と生産のために同じ構成を使用できます。 Tomcatがその変数を認識していることを確認してください。 サーブレットからいくつかのファイルにアクセスする必要がある場合は、System.getProperty( "MYAPP_CONF")、voilaを使用します。 –

+0

ありがとうたくさん....................... :)しかし、もし私がD/Lに画像を..... .....それ。私はあなたの説明でこの部分を忘れました – Yoav