2012-06-23 4 views
2

Я загружаюсь в android. Для этого я следую за этим tutorial. Мой текущий код дает мне эту ошибку в моем LogCatЗагрузка изображения и отправка параметра в android с использованием base64

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>'; 

?> 
+0

Иногда это происходит также, если разрешение уже принято, просто перезапустить 'Wifi' или' MobileData' –

ответ

2

UnknownHostException относится к вашему домену url или нет подключения к Интернету/сети,

Итак, убедитесь, что вы добавили интернет-разрешение в свой файл AndroidManifest.

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

Надежда Это помогает

+0

Спасибо это работает. Не могли бы вы рассказать мне, как сохранить имя изображения как оригинальное имя? Я имею в виду, я хочу использовать то же имя изображения во время загрузки. – 2619

2

я следовал за этим же учебник. Работал до тех пор, пока изображения были достаточно маленькими.

В противном случае вы можете получить из выпуска памяти на:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

Чтобы ответить вам вопрос -

Не могли бы вы сказать мне, как я могу сохранить имя изображения в качестве оригинального имени ? Я имею в виду, я хочу использовать то же имя изображения во время загрузки .

Вы можете добавить переменную в URL-запрос, содержащий исходное имя. В противном случае вы не сможете вставить его в кодированную строку размером 64 байта.

Что-то вроде этого:

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

PHP сторона выглядит

$FileName = $_GET['name']; 
Смежные вопросы