2016-04-29 7 views
0

ES IST SELBST ANTWORT FRAGEBild hochladen und einen Text senden mit ihm POST-Methode in android app und PHP-Server-Site

ich einige Texte mit meinem Bild senden möchten, die hochgeladen werden sollen, ich weiß, dass Apache Httpclient Multipart ist veraltet. also möchte ich dies mit HTTPUrlConnection tun. hier mein Code unten, bitte helft.

+0

Sie nicht beschreiben was funktioniert und was nicht. Es gibt auch keine Fragen. – greenapps

+0

Ich weiß einfach nicht, wie fügen Sie Post-Anfrage an Server mit Bild-Upload-Anfrage zusammen in httpUrlConnection-Methode! Jeder von ihnen alleine funktioniert gut, aber ich weiß nicht, wie man beides zusammen macht. –

+0

Das Problem ist, ich weiß nicht, wie man den Code für beide Android und PHP schreiben. –

Antwort

0

Ich habe die Antwort: Ich schreibe einfach meinen Code (der richtige). hoffe, anderen mit gleichen Schwierigkeiten zu helfen. Ich möchte ein Bild mit Benutzername und Token senden, ist es werde, wie dies in Android und php:

protected Object doInBackground(Object[] params) { 
    int fbyte,buffersize,cbuffer; 
    int maxbuffer=1024*1024; 
    final String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****" + Long.toString(System.currentTimeMillis()) + "*****"; 
    BufferedReader reader = null; 

    try{ 
     String sfile = params[1].toString(); 
     File f=new File(sfile); 
     FileInputStream fis=new FileInputStream(f); 
     URL url=new URL(params[0].toString()); 
     HttpURLConnection con =(HttpURLConnection) url.openConnection(); 
     con.setDoInput(true); 
     con.setDoOutput(true); 
     con.setRequestMethod("POST"); 
     con.setUseCaches(false); 
     con.setRequestProperty("Connection", "keep-Alive"); 
     con.setRequestProperty("ENCType", "multipart/form-data"); 
     con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); 
     con.setRequestProperty("imagefile", sfile); 
     DataOutputStream dos =new DataOutputStream(con.getOutputStream()); 


     // upload image : 
     dos.writeBytes(twoHyphens + boundary + lineEnd); 
     dos.writeBytes("Content-Disposition: form-data; name=\"imagefile\"; filename=\"" + sfile + "\""+ lineEnd); 
     dos.writeBytes(lineEnd); 

     fbyte=fis.available(); 
     buffersize=Math.min(fbyte, maxbuffer); 
     byte[] buffer=new byte[buffersize]; 
     cbuffer=fis.read(buffer, 0, buffersize); 
     while(cbuffer>0){ 
      dos.write(buffer,0,buffersize); 
      fbyte=fis.available(); 
      buffersize=Math.min(fbyte, maxbuffer); 
      cbuffer=fis.read(buffer,0,buffersize); 
     } 
     dos.writeBytes(lineEnd); 

     String Username = "my username"; 
     String Token = "my token"; 

     //write username : 
     dos.writeBytes(twoHyphens+ boundary + lineEnd); 
     dos.writeBytes("Content-Disposition: form-data; name=\"username\";" + lineEnd); 
     dos.writeBytes("Content-Type: text/plain; charset=UTF-8" + lineEnd); 
     dos.writeBytes(lineEnd + Username + lineEnd); 
     dos.writeBytes(lineEnd); 

     //write token : 
     dos.writeBytes(twoHyphens+ boundary + lineEnd); 
     dos.writeBytes("Content-Disposition: form-data; name=\"token\";" + lineEnd); 
     dos.writeBytes("Content-Type: text/plain; charset=UTF-8" + lineEnd); 
     dos.writeBytes(lineEnd + Token + lineEnd); 
     dos.writeBytes(lineEnd); 

     if(con.getResponseCode()==200){ 
      fis.close(); 
      dos.flush(); 
      dos.close(); 
     } 

    }catch(final Exception e){ e.printStackTrace(); } 
    return ""; 
}// end doInBackground() 

php Seite:

$username = $_POST['username']; 
$token = $_POST['token']; 

$target_path = "upload/". basename($_FILES['imagefile']['name']); 
move_uploaded_file($_FILES['imagefile']['tmp_name'], $target_path); 

echo "username: ".$username." and token: ".$token; 
+0

Gut gemacht! !!!! – greenapps