2016-10-15 5 views
1

J'ai lutté pendant environ une semaine en essayant différentes façons de télécharger mon fichier audio avec les données utilisateur afin que je puisse déterminer ce qu'il faut enregistrer dans la base de données.
Le fichier a été transféré avec succès mais je ne peux pas obtenir le nom d'utilisateur.
@ user5155835 here avait le même problème et apparemment a été résolu par lui, mais je ne peux pas le faire fonctionner.
S'il vous plaît j'ai besoin d'aide avec ceci. J'ai détruit ce code et utilisé différentes autres approches, mais je ne peux jamais voir la variable POST.
Dans mon combat, je suis de nouveau à ce code, sans parler du fait que j'ai affaire à plusieurs processus asyncTask et que la compilation des librairies dans Gradle était un cauchemar.

Dans 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(); 

Dans le serveur.

$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 
    } 

depuis un serveur

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

Très étrange que vous avez des problèmes. Le code pour poster un fichier et quelques paramètres a été posté si souvent sur stackoverflow. Alors pourquoi est-ce que vous ne pouvez pas le trouver? En principe, chaque paramètre et sa valeur doivent être envoyés entre deux lignes de démarcation. Comme le fichier. Alors, google. – greenapps

Répondre

0

J'ai une petite suggestion pour vous. Si vous n'avez pas beaucoup de données à publier sur le serveur, ce que vous pouvez faire est. Transmettez les données en tant que paramètres et fichiers en tant que paramètres de publication. Ainsi, vous pouvez obtenir l'utilisateur et d'autres données à partir de $ _GET [ « utilisateur »]

par exemple si votre URL est: http://example.com/TestPost.php

alors vous devriez le faire comme http://example.com/[email protected].

Ce n'est pas une bonne solution mais pour l'instant cela fonctionnera pour vous.

+0

Ce message n'est pas une tentative réelle pour répondre à la question. S'il vous plaît noter [Stack Overflow ne fonctionne pas comme un forum de discussion] (http://stackoverflow.com/about), il s'agit d'un site Q & A où chaque message est soit une question ou une réponse à une question. Les articles peuvent également avoir [commentaires] (http://stackoverflow.com/help/privileges/comment) - de petites phrases comme celle-ci - qui peuvent être utilisées pour critiquer ou demander des clarifications à un auteur. Cela devrait être un commentaire ou une [nouvelle question] (http://stackoverflow.com/questions/ask). –

+0

Ce message n'est pas une tentative réelle pour répondre à la question. S'il vous plaît noter [Stack Overflow ne fonctionne pas comme un forum de discussion] (http://stackoverflow.com/about), il s'agit d'un site Q & A où chaque message est soit une question ou une réponse à une question. Les articles peuvent également avoir [commentaires] (http://stackoverflow.com/help/privileges/comment) - de petites phrases comme celle-ci - qui peuvent être utilisées pour critiquer ou demander des clarifications à un auteur. Cela devrait être un commentaire ou une [nouvelle question] (http://stackoverflow.com/questions/ask). –