Я в основном tring, чтобы загрузить изображение с android и загрузить его на php-сервер, но здесь я не получаю никакого соединения с этим кодом или загрузкой изображения
, Я получаю эту ошибку.
Error in http connection java.net.UnknownHostException: host name
но, согласно моим знаниям, я дал правильное соединение и php-файл также в правильном домене. Посмотрите мой код: UploadImage.java
public class UploadImage extends Activity { InputStream inputStream; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want. byte [] byte_arr = stream.toByteArray(); String image_str = Base64.encodeBytes(byte_arr); ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("image",image_str)); try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://server.com/uploadimage/uploadimage.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); String the_string_response = convertResponseToString(response); Toast.makeText(UploadImage.this, "Response " + the_string_response, Toast.LENGTH_LONG).show(); }catch(Exception e){ Toast.makeText(UploadImage.this, "ERROR " + e.getMessage(), Toast.LENGTH_LONG).show(); System.out.println("Error in http connection "+e.toString()); } } public String convertResponseToString(HttpResponse response) throws IllegalStateException, IOException{ String res = ""; StringBuffer buffer = new StringBuffer(); inputStream = response.getEntity().getContent(); int contentLength = (int) response.getEntity().getContentLength(); //getting content length….. Toast.makeText(UploadImage.this, "contentLength : " + contentLength, Toast.LENGTH_LONG).show(); if (contentLength < 0){ } else{ byte[] data = new byte[512]; int len = 0; try { while (-1 != (len = inputStream.read(data)) ) { buffer.append(new String(data, 0, len)); //converting to string and appending to stringbuffer….. } } catch (IOException e) { e.printStackTrace(); } try { inputStream.close(); // closing the stream….. } catch (IOException e) { e.printStackTrace(); } res = buffer.toString(); // converting stringbuffer to string….. Toast.makeText(UploadImage.this, "Result : " + res, Toast.LENGTH_LONG).show(); //System.out.println("Response => " + EntityUtils.toString(response.getEntity())); } return res; }
}
Код Php:
<?php $base=$_REQUEST['image']; $binary=base64_decode($base); header('Content-Type: bitmap; charset=utf-8'); $file = fopen('uploaded_image.jpg', 'wb'); fwrite($file, $binary); fclose($file); echo 'Image upload complete!!, Please check your php file directory……';?>
Кто-нибудь знает эту проблему? если кто-нибудь знает, как хранить в базе данных mysql из php-файла и получать опрос, пожалуйста, предложите мне здесь …
Проблема очень ясна …
Error in http connection java.net.UnknownHostException: host name
означает, что HttpPost
не может установить соединение с использованием имени хоста, которое вы HttpPost
– поскольку имя хоста, которое вы HttpPost
неизвестно.
Если вы берете имя хоста из этой строки:
HttpPost httppost = new HttpPost("http://server.com/uploadimage/uploadimage.php");
и поместите его в браузер на том же устройстве, что произойдет … Я предлагаю вам получить сообщение об ошибке, неспособное подключиться к хосту. Если это сработает, я предлагаю вам проверить следующую строку в вашем манифесте:
<uses-permission android:name="android.permission.INTERNET" />
Также убедитесь, что файл PHP содержит следующий заголовок, если вы используете JPEG
:
header('Content-Type: image/jpg');
1. Need to add Internet permission in android manifest file . <uses-permission android:name="android.permission.INTERNET" /> 2. Every Time i used to see image using url but unable to see because i didnt added echo "<img src=test.jpg>"; 3.$file = fopen('test.jpg', 'wb'); 4. final thing is i have to change header file as : header('Content-Type: image/jpg; charset=utf-8');
Проверьте конфигурацию хоста и выберите правильный заголовок для загрузки файла. В вашем php-коде вы указали неверный тип заголовка.
Я рекомендую вам, как сказал ManseUK, добавить свое разрешение в манифест. Эта ошибка довольно неясна, но часто разрешается путем добавления <uses-permission android:name="android.permission.INTERNET" />
Это работает для меня:
// изменение формата сжатия растрового изображения в jpeg
bitmap.compress (Bitmap.CompressFormat.JPEG, 100, baos);
// затем uploadimage.php
// обратите внимание на функцию imagecreatefromstring ()
error_reporting(E_ALL); // in case its turned off and your not seeing errors ini_set('display_errors','1'); // confirm and browse to page if($base) { $ttime = intval(time()); $quality = '100'; $save_to = 'images/img-' . $ttime . '.jpeg'; $binary=base64_decode($base); $im = imagecreatefromstring($binary); if ($im !== false) { header('Content-Type: image/jpg'); $idno = ImageJPEG($im, $save_to, $quality); imagedestroy($im); echo "iid:" . $ttime; } else { echo "Error:" . $ttime; } }