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

У меня есть приложение для 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);
?>

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

введите описание изображения здесь

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

введите описание изображения здесь

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

1

Решение

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

HttpEntity mpEntity = MultipartEntityBuilder.create()
.addBinaryBody(
"file", cbFile, ContentType.create("audio/ogg"), cbFile.getName())
.build();
0

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

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

По вопросам рекламы [email protected]