0

ネイティブの電話カメラを使用して写真を撮り、ビデオを録画する Android アプリケーションを完成させました。私は今、自分の携帯電話を使用して、これらのアイテムを自分のローカル Web サイトにリモートでアップロードしたいと考えています (Apache を Web サーバーとして、MySQL をデータベース スクリプト言語として php を使用)。ただし、この Web サイトはローカルで実行されています。私はアドホックを作成することを望んでいました。ローカル Web アプリケーションにデータを正常にアップロードできるように、携帯電話の送信ボタンを適切なパラメーターでプログラムするのを誰かが手伝ってくれませんか。事前にサンクス。

4

2 に答える 2

1

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

于 2012-04-30T08:53:14.510 に答える
1

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

これは、 httpmime Apache ライブラリBitmapを使用して、マルチパートで を送信するメソッドの例です( MultipartEntityを見てください)。

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変数でバイナリ データを受け取ります。

于 2012-04-30T09:41:51.297 に答える