Как получить дополнительные данные $ _POST на PHP-сервере с помощью Android Multipart

Я около недели пытался разными способами загрузить свой аудиофайл вместе с пользовательскими данными, чтобы я мог определить, что сохранить в базе данных.
Файл успешно загружен, но я не могу получить имя пользователя.
@ user5155835 Вот была та же проблема и, видимо, была решена им, но я не могу заставить его работать.
Пожалуйста, мне нужна помощь с этим. Я разбил этот код и использовал другие подходы, но я никогда не вижу переменную POST.
В своей борьбе я снова возвращаюсь к этому коду, не говоря уже о том, что я имею дело с несколькими процессами asyncTask, и компиляция библиотек в gradle была кошмаром.

В Android

FileInputStream fileInputStream = new FileInputStream(new File(existingFileName));
// open a URL connection to the Servlet
URL url = new URL(urlString);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
// Allow Inputs
conn.setDoInput(true);
// Allow Outputs
conn.setDoOutput(true);
// Don't use a cached copy.
conn.setUseCaches(false);
// Use a post method.
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + lineEnd);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);

while (bytesRead > 0) {

dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);

}
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);dos.writeBytes("Content-Disposition: form-data; name=\"user\"" +params[0] +"\""+lineEnd);

dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + lineEnd);// close streams
Log.e("Debug", "File is written");
fileInputStream.close();
dos.flush();
dos.close();

На сервере.

$email = $_POST['user'];
echo "email is ".$email;

$strSQL = "SELECT * FROM member WHERE email = '".$email."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if($objResult)
{
//upload file
}

С сервера

E/Debug: File is written
E/Debug: Server Response email is

1

Решение

У меня есть небольшое предложение для вас. Если у вас не было большого количества данных, которые нужно опубликовать на сервере, вы можете это сделать. Передайте данные как параметры получения и файл как параметры записи. Таким образом, вы можете получить пользовательские и другие данные из $ _Get [«user»]

например, если ваш URL-адрес: http://example.com/TestPost.php

тогда вы должны сделать это как http://example.com/[email protected].

Это не очень хорошие решения, но пока оно будет работать на вас.

0

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

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

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