Android: изображение загружается на сервер всегда 0 байт

Я пытаюсь загрузить (опубликовать) данные формы — вместе с изображением на сервер. Я пробовал следующий код, но не смог точно определить ошибку.

Код Android:

Я создаю объект класса Product в основной операции и отправляю его в фоновую операцию. Где я пытаюсь загрузить данные на сервер.

Используемые шаги:

  1. Просмотр изображения из галереи и отображается в виде изображения.
  2. При нажатии даже кнопки «Загрузить» в основной активности
    изображение в растровое изображение и установить его внутри объекта класса Product
  3. Запустил фоновое действие и передал ссылку на продукт
    создан на шаге 2
  4. Получить растровое изображение из объекта продукта, преобразовать его в байт
    массив .., а затем преобразовать в строку, используя Base64.
  5. Разместите данные на сервере.
protected String doInBackground(Products... params) {
Products pd=params[0];
Bitmap bmp=pd.getImage();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Log.e("Bitmap ","height : "+bmp.getHeight()+" Width :"+bmp.getWidth());
Log.e("Size of bmp",""+bmp.getByteCount());
bmp.compress(Bitmap.CompressFormat.JPEG,100,bos);
Log.e("Size of bos",""+bos.size());
byte[] imageToByte = bos.toByteArray();
String imageData = Base64.encodeToString(imageToByte,Base64.DEFAULT);
Log.e("Base64 encoded image",imageData);

Log.e("Status","Image Parsed");

try{
String link="*****/sellPage.php";

String data = URLEncoder.encode("uploadedimage", "UTF-8") + "=" + imageData;
Log.e("Image Data",data);
URL url = new URL(link);
URLConnection conn = url.openConnection();

conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

wr.write(data);
wr.flush();
Log.e("Status", "Request Sent");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

StringBuilder sb = new StringBuilder();
String line = null;

// Read Server Response
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
Log.e("Status","Response forwarded for processing");
return sb.toString();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}

return null;
}

PHP код для чтения данных с Android и записи в файл

$imgsrc = base64_decode($_POST['uploadedimage']);

echo $imsrc;

$fp = fopen('myImage1.jpg', 'w');

fwrite($fp, $imgsrc);

if(fclose($fp)){ echo "Successful";}

else{ echo "Error uploading image";}

Выход

Файл создается на сервере, но его размер составляет всего 0 байт. Один или два раза размер файла составлял несколько сотен килобайт, но при попытке отобразить его в теге «img» ничего не получилось.

Любая помощь будет высоко оценен.

3

Решение

Вы можете использовать следующий код с вашим кодом для отправки изображения на сервер

mEntity = new MultipartEntity();
if (byteArray != null || bitmap != null) {
mEntity.addPart("profile_pic", new ByteArrayBody(byteArray,
"image/jpg", "" + etName.getText().toString()
+ "_profile_pic.jpg"));

а для задней части вы можете получить изображение как $_FILES['profile_pic'] . Вы получите изображение и все детали, связанные с изображением.

0

Другие решения

Других решений пока нет …