Загрузка файла с использованием multipartformentity в скрипт php (файл заканчивается в $ _POST)

1

У меня есть приложение для Android, которое использует многочастность от apache httpcomponents. Приложение загружает файл, используя HTTP-запрос в php-скрипт. Тем не менее, файл, который я загружаю (.ogg), заканчивается в $ _POST вместо $ _FILES, и он выглядит как двоичный файл, хотя я могу ошибаться.

У меня есть расширение chrome rest, и я использовал его для POST запроса multipart/form-data с тем же самым.ogg файлом, и файл попадает в нужное место ($ _FILES).

Код Android выглядит следующим образом:

// Send the file to the server.
// Create HTTP objects.
// Request.
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(ACTION);

// Response.
HttpResponse httpResponse;

httpClient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

MultipartEntity mpEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
ContentBody cbFile = new FileBody(mediaFile, "audio/ogg");
mpEntity.addPart("file", cbFile);

httpPost.setEntity(mpEntity);

// Execute.
httpResponse = httpClient.execute(httpPost);

// Evaluate the response.
int statusCode = httpResponse.getStatusLine().getStatusCode();

// Make sure everythings okay.
if (statusCode == 200) {
     HttpEntity resEntity = httpResponse.getEntity();
     if (resEntity != null) {
          String body = EntityUtils.toString(resEntity);
          resEntity.consumeContent();
          Log.d("APP_STATUS", body);
     }
}

httpClient.getConnectionManager().shutdown();

И очень простой PHP-скрипт:

<?php
echo "\$_POST";
var_dump($_POST);
echo "\$_FILES";
var_dump($_FILES);
?>

Ответ при использовании приложения:

Изображение 174551

Ответ при использовании расширения Chrome REST:

Изображение 174551

Если у кого-нибудь есть понимание того, к чему я не могу сказать, пожалуйста, дайте мне знать.

  • 0
    У вас есть доступ к MultipartEntityBuilder ?
  • 0
    Я считаю, что код, который я использовал, был из аналогичной ситуации, за исключением того, что они загружали файл изображения.
Теги:
multipartentity

1 ответ

0
Лучший ответ

Попробуйте использовать построитель объектов

HttpEntity mpEntity = MultipartEntityBuilder.create()
    .addBinaryBody(
      "file", cbFile, ContentType.create("audio/ogg"), cbFile.getName())
    .build();
  • 0
    Круто, ты, блин, скала, большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню