2

私はアンドロイドでアップロードしています。そうするために、私はこのチュートリアルに従っています。現在のコードでは、logcat でこのエラーが発生します

06-23 10:10:22.990: D/dalvikvm(25853): GC_EXTERNAL_ALLOC freed 48K, 50% free 2723K/5379K, external 0K/0K, paused 33ms
06-23 10:10:23.030: E/log_tag(25853): Error in http connection java.net.UnknownHostException: www.example.info
06-23 10:10:23.115: D/CLIPBOARD(25853): Hide Clipboard dialog at Starting input: finished by someone else... !

私のコードは次のようになります

public class UploadFileActivity extends Activity {
/** Called when the activity is first created. */
Button bUpload;
EditText etParam;

InputStream is;

@Override

public void onCreate(Bundle icicle) {

    super.onCreate(icicle);
    setContentView(R.layout.main);

    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    ByteArrayOutputStream bao = new ByteArrayOutputStream();
    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao);

    byte [] ba = bao.toByteArray();
    String ba1=Base64.encodeToString(ba, 0);

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("image",ba1));

    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.example.info/androidfileupload/index.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch(Exception e) {
        Log.e("log_tag", "Error in http connection "+e.toString());
    }

}
}

これが私がサーバー側で使用しているものです

<?php
$base=$_REQUEST['image'];

echo $base;

// base64 encoded utf-8 string

$binary=base64_decode($base);

// binary, utf-8 bytes

header('Content-Type: bitmap; charset=utf-8');

// print($binary);

//$theFile = base64_decode($image_data);

$file = fopen('test.jpg', 'wb');

fwrite($file, $binary);

fclose($file);

echo '<img src=test.jpg>';

?>
4

2 に答える 2

2

私は同じチュートリアルに従いました。画像が十分に小さい限り機能しました。

それ以外の場合は、次の場所でメモリ不足の問題が発生する可能性があります。

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

あなたの質問に答えるために-

画像の名前を元の名前のままにするにはどうすればよいですか?つまり、アップロード時に同じ名前の画像を使用したいのです。

元の名前を保持する変数をURLリクエストに追加できます。そうしないと、64バイトでエンコードされた文字列に埋め込むことができません。

このようなもの:

"http://www.example.info/androidfileupload/index.php?name=filename"

PHP側は次のようになります

$FileName = $_GET['name'];
于 2012-06-26T02:32:40.563 に答える
2

URLドメインに関連しているUnknownHostExceptionか、インターネット/ネットワーク接続がありません。

そのため、AndroidManifest ファイルにインターネット アクセス許可が追加されていることを確認してください。

<uses-permission android:name="android.permission.INTERNET" />

お役に立てれば

于 2012-06-23T07:22:06.100 に答える