2012-04-30 9 views
0

ネイティブの電話機カメラを使用して写真を撮ったり、ビデオを録画するAndroidアプリケーションが完成しました。私は今、私のローカルのウェブサイト上でこれらの項目をリモートでアップロードするために私の電話を使いたいと思っています(ApacheはWebサーバー、データベースのスクリプト言語はPHPです)。ただし、このWebサイトはローカルで実行されています。私はアドホックを作りたいと思っていました。私のローカルWebアプリケーションにデータを正常にアップロードするために、適切なパラメータを使用して自分の送信ボタンを自分の電話機にプログラムする手助けをすることができますか?あらかじめThanx。アンドロイドアプリケーション内でキャプチャしたファイルをデスクトップ上のリモートサーバにアップロード

答えて

1

アンドロイドで画像や動画をアップロードするには、一般的にMultipartリクエストが使用されます。 This linkは、アンドロイドのマルチパートの基本的な紹介です。

1

@Antrrometによると、MultipartでHttpPostを使用してファイルを送信する必要があります。

これはhttpmime Apacheのライブラリ(MultipartEntityを見て)を使用して、マルチパートでBitmapを送信する方法の一例である。この方法で

public String doHttpMultipart(String url, 
           List<NameValuePair> pairs, 
           Bitmap bitmap, 
           String fileName) throws IOException, 
              ClientProtocolException, 
              UnsupportedEncodingException { 
     ByteArrayOutputStream bos = new ByteArrayOutputStream();   
     bitmap.compress(CompressFormat.PNG, 100, bos); 
     byte[] imageData = bos.toByteArray(); 
     ByteArrayBody byteArrayBody = new ByteArrayBody(imageData, fileName); 
     MultipartEntity reqEntity = 
        new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

     reqEntity.addPart("image", byteArrayBody); 

     for(NameValuePair p : pairs) { 
      reqEntity.addPart(p.getName(), new StringBody(p.getValue())); 
     } 

     HttpPost request = new HttpPost(url); 
     request.setEntity(reqEntity); 

     HttpClient client = new DefaultHttpClient(); 
     HttpResponse httpResponse = client.execute(request); 

     String response = ""; 
     BufferedReader in = null; 

     try { 
      response = super.readHttpStream(response, in, httpResponse);  
     } catch(IllegalStateException e) { 
      throw new IllegalStateException(); 
     } catch(IOException e) { 
      throw new IOException(); 
     } finally { 
      if (in != null) { 
       try { 
        in.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     return response; 
    } 

を、私はまた私のリクエストでパラメータのリストを送信し、私はサーバーから応答を読んだ。

バックエンドでは、$_FILES変数にバイナリデータを受け取ります。

+0

まだテストしてください。 – user1364687

関連する問題