2011-10-20 19 views
0

サーバから.zipファイルを取得するアプリケーションを設計中です。および受信時ににそれらを抽出します。サーバからAndroidアプリに.zipを送信する最も良い方法

私は抽出することができますが、サーバーから.zipを送信する最良の方法は何か分かりません。それは今のところ一つの方法である必要がありますが、将来的にはバージョンコントロールを追加したいと思います。

私はいくつかの調査を行い、JSONを調べましたが、.zipファイルを送信する例は見つかりませんでした。 http接続は同等のオプションのように思えますが、私は.zipを受け取ることができると知っていますが、バージョンコントロールは実装が簡単ではないと思います。これらの2つの方法のいずれかの提案や、別の方法が良いと思うなら、私はそれにもオープンです。

+0

JSONは、HTTP接続を介して送信されるデータ形式です。 zipファイルはどこに保存されていますか(httpサーバ、ftpサーバ、その他)?それがhttpサーバーの場合、標準のhttp、asp.net、javaを使用していますか? – kmehta

+0

私はそれを実装するのが簡単だろうと思うのでhttpを使用したいと思いますが、javaや他のものを使うともっと役に立つでしょう。 –

答えて

0

マニフェストファイルを使用してください。マニフェストファイル(他のファイルのリストを含むファイル)を調べ、ローカルストレージにそれらのファイルが含まれているかどうかを確認します。もしそうなら、みんな幸せです。そうでない場合は、マニフェストがローカルストレージにリストするファイルを取得します。

上記のコードを直接使用しないでください。いくつかのファイルをダウンロードしていることをユーザーに伝えるためにUIのフィードバックを使用します(できれば、Wi-Fiと交換したい場合は最初にお尋ねください)。マニフェストを最初に取得することは大丈夫です。尋ねることなく不足しているファイルを取得しないでください。

私のゲーム "barcode beasties"では、これは、最初の実行時に約20Mbのオーディオアセットをダウンロードします。私はまた、新しいリリースを押し出すことなく、オーディオビットを追加することもできます。 Androidは、ZIPファイルを解凍するのにも賢明ですが、あなたに何が起きているのかを伝えて、主な活動スレッドを殺さずにキャンセルまたは戻ることができるようにしてください。

+1

リチャードが正しいということは、あなたが何をしているのかをユーザーに示すコードを間違いなく追加する必要があることです。 私は実際にサーバー上のファイルを取得するためにPHPを使用しています。私はorigファイル名とコンテンツの長さをレスポンスのヘッダーに追加します。 私はアプリでダウンロードを開始するボタンがあり、ヒットしたら 'AsyncTask'でダウンロード全体を行います。また、私はProgressDialogを表示し、コンテンツの長さを取得するためにヘッダー情報を最初に読んで、プログレスバーを持っています。 私の答えのコードは単なる例ですが、間違いなく完全です。 – Jens

+0

私は、マニフェストファイルをバージョン管理に使うことができると知っていますが、再度学びたいと思っていますので、私は本当に分かりません。ダウンロードする個々のファイルを選択する –

+0

私はあなたが1つの質問であまりにも多くを求めていると思う - あなたはおそらくそれを分解する必要がありますので、あなたが構成するすべてのビットを取得し、一緒に接着することができます。 1)ファイル比較/バージョン管理2)アンドロイドチェックボックス/リストで変更されたものを選択3)非同期ダウンロード。私はあなたがいくつかの例を求めれば、ついにそれを得るだろうと確信しています。私はカット&ペーストして鉱山ですが、それはあなたが欲しいものではありません(特に個々の選択で)。 –

0

あなたはアンドロイドサイトで標準HttpUrlConnectionを使用して、サーバ上のzipファイルを指し示すURLを与えることができると思います。

次に、デバイスのローカルフォルダにダウンロードできます。 ここでは、Excelファイルをダウンロードする方法の例を示します(zipファイルとexcelファイルは両方ともバイナリなので、同じにする必要があります)。

何らかのバージョン管理をしたいときは、サーバー側で(可能であれば)サーバーが提供するもの(たとえばphp)でこれを行う方がよいでしょう。 次に、使用可能なzipファイルのバージョンをチェックし、応答を送信する小さなPHPスクリプトを作成します(おそらくjson応答)。

 URL url = new URL("yourURL"); 

     HttpURLConnection httpConnection = (HttpURLConnection) url 
       .openConnection(); 
     httpConnection.setRequestMethod("GET"); 
     httpConnection.setDoOutput(true); 
     httpConnection.connect(); 


     InputStream input = httpConnection.getInputStream(); 

     OutputStream output = new FileOutputStream(new File(activity 
       .getFilesDir().getPath() + "/" + "yourFileName.zip")); 

     byte buffer[] = new byte[1024]; 

     int len1 = 0; 
     int bytesWritten = 0; 
     while ((len1 = input.read(buffer)) > 0) { 
      output.write(buffer, 0, len1); 
      bytesWritten += len1; 
     } 

     output.flush(); 
     output.close(); 
     input.close(); 
+0

jsonを使って両方のデバイスのマニフェストファイルの内容を確認できますか? –

+0

サーバー側ではどのような技術が利用できますか? – Jens

+0

私は持っているか、それは利用可能ですか? –

関連する問題