1

私はこのコードを使用していますが、いくつかのメモリの問題が発生しています:

      // Get the image from the sdcard
      Bitmap bm = BitmapFactory.decodeFile("/sdcard/myimage.jpg");
      // turn image into byte array output stream
      ByteArrayOutputStream baos = new ByteArrayOutputStream();  
      // 'compress' the jpeg
      bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);               
      // get byte[] array of the image        
      byte[] byteArray = baos.toByteArray();
      // turn image into base64 string        
      String encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
      // and base64 string to 'params' value pair        
      params.add(new BasicNameValuePair("userfile", encodedImage));

      try {
       HttpPost request = new HttpPost();

       String urlString = "http://www.example.com";
       request.setURI(new URI(urlString));

     if(params != null) {
        request.setEntity(new UrlEncodedFormEntity(params));
        HttpClient client = new DefaultHttpClient();
        client.execute(request);
     } // end if
} // end try

Base64OutputStreamの代わりに使用することが提案されていますが、サーバーにアップロードできる文字列の出力Base64.encodeToStringを使用することに成功していません。IMAGEBase64OutputStreamでの使用例は非常に役立ちます。Base64OutputStream

編集

答えを機能させるには、Androidプロジェクトにapache-mime4j-dom-0.7.2.jarとhttpmime-4.1.3.jarの2つのファイルを追加する必要があります。

apache-mime4j-dom-0.7.2.jarはhttp://james.apache.org/download.cgi#Apache_Mime4Jからダウンロードできます。バイナリをダウンロードして解凍し、apache-mime4j-dom-0.7.2を見つけます。 .jarファイル。

次に、 http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.httpcomponents/httpmime/4.1.3にアクセスして、httpmime- 4.1.3.jarをダウンロードします。

次に、これらのファイルを両方ともEclipseのプロジェクトにドラッグします。次に、Eclipseで、「プロジェクト」>「プロパティー」を選択します。[プロパティ]ポップアップを選択し、[Javaビルドパス]を選択します。[ライブラリ]タブをクリックします([ソース]、[プロジェクト]、[ライブラリ]、[注文とエクスポート]の順に検索します)。[瓶の追加]をクリックして、apache-mime4j-dom-0.7.2.jarとhttpmime-4.1.3.jarを選択します。次に、[注文とエクスポート]タブをクリックします。apache-mime4j-dom-0.7.2.jarおよびhttpmime-4.1.3.jarを確認してください。次に、そのポップアップを閉じて、Eclipseメニューから[Project]>[Clean]を選択します。

4

1 に答える 1

2

可能であれば、ファイルをbase64encodeしてURLで送信するのではなく、代わりにMultiPartファイルのアップロードを使用してください。

HttpPost post = new HttpPost(URL);
HttpClient client = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );

// picture
entity.addPart( "userfile", new FileBody( 
    new File( MyApp.getContext().getFilesDir(), "userfile.jpg" ),
    "image/jpeg")
);

entity.addPart( "blahblah", new StringBody( "blah" ));  // string value

post.setEntity( entity );
client.execute( post );
于 2012-06-20T01:09:20.800 に答える