2011-07-07 12 views
0

私はアンドロイドでは新しいですが、ウェブをチェックしたり、いくつかの本を作ってイメージと2つ以上のパラメータを送る必要のあるアプリを作っています。私はちょうど、データがアップロードされたか/正常に送信されたかどうかをチェックするスクリプトPHPを作りたいと思う。例PHPを使ってアンドロイドデバイスからアップロードする方法

だからこれは私のコードです:

public void executeMultipartPost() //throws Exception 
    { 
     try { 
      //convert image to stream, strImage is an image converted to string 
      InputStream is   = new ByteArrayInputStream(this.strImage.getBytes("UTF-8")); 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost postRequest = new HttpPost("http://192.168.12.12/androidlistener/test.php"); 
      byte[] data    = IOUtils.toByteArray(is); 
      InputStreamBody isb  = new InputStreamBody(new ByteArrayInputStream(data), "uploadedFile"); 
      //These params were filled in before this process 

      StringBody sPhoneId  = new StringBody(strPhoneId); 
      StringBody sMessage  = new StringBody(strMessage); 

      MultipartEntity multipartContent = new MultipartEntity(); 
      multipartContent.addPart("uploadedFile", isb); 
      multipartContent.addPart("phoneid", sPhoneId); 
      multipartContent.addPart("msg", sMessage); 
      postRequest.setEntity(multipartContent); 
      HttpResponse response = httpClient.execute(postRequest); 
      response.getEntity().getContent().close(); 
     } catch (Throwable e) 
     { 
      // Manejar error 
     } 
    } 

だから私は、PHPスクリプトを作るために助けが必要。前もって感謝します。

答えて

0

アップロードするエンティティをチェックサムとして追加する必要があります(バッテリーの寿命を覚えているmd5より遅くない)。次に、サーバー側のイメージのチェックサムと "uploadedFile"エンティティを比較します。私はいくらかHTTPの仕組みを忘れていますが、Base64を使ってファイルをアップロードすることをお勧めします。

単純なチェックサムは、multipartContent.addPart( "checksum"、isb.getContentLength)のようになります。

これは、実際に一貫性をチェックせずにアップロードされたバイトをチェックします。平均的な環境では、人が真ん中にいなければ、ビットは転送中にシフトしないので問題ありません。

メッセージが投稿値に含まれていることを確認することもできますが、最後に送信されるように接続が切断される可能性はほとんどありませんが、ベストプラクティスは完了するようにしてください。

+0

sugerenceに感謝します。でも、私のPHPスクリプトのヘルプが必要です。あなたは私に例を教えていただけますか? – Erick

関連する問題