2012-11-06 85 views
0

我無法將圖像發佈到php服務器。 我有搜索時發現的代碼,但我的問題是如何在當前請求中傳遞用戶名,密碼,模塊和函數名稱。 這是我在大多數網站上找到的代碼。將圖像上傳到php服務器中android

HttpURLConnection connection = null; 
DataOutputStream outputStream = null; 
DataInputStream inputStream = null; 

String pathToOurFile = "/data/file_to_send.mp3"; 
String urlServer = "http://192.168.1.1/handle_upload.php"; 
String lineEnd = "\r\n"; 
String twoHyphens = "--"; 
String boundary = "*****"; 

int bytesRead, bytesAvailable, bufferSize; 
byte[] buffer; 
int maxBufferSize = 1*1024*1024; 

try 
{ 

FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 

URL url = new URL(urlServer); 
connection = (HttpURLConnection) url.openConnection(); 

// Allow Inputs & Outputs 
connection.setDoInput(true); 
connection.setDoOutput(true); 
connection.setUseCaches(false); 

// Enable POST method 
connection.setRequestMethod("POST"); 

connection.setRequestProperty("Connection", "Keep-Alive"); 
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); 

outputStream = new DataOutputStream(connection.getOutputStream()); 
outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd); 
outputStream.writeBytes(lineEnd); 

bytesAvailable = fileInputStream.available(); 
bufferSize = Math.min(bytesAvailable, maxBufferSize); 
buffer = new byte[bufferSize]; 

// Read file 
bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

while (bytesRead > 0) 
{ 
outputStream.write(buffer, 0, bufferSize); 
bytesAvailable = fileInputStream.available(); 
bufferSize = Math.min(bytesAvailable, maxBufferSize); 
bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
} 

outputStream.writeBytes(lineEnd); 
outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

// Responses from the server (code and message) 
serverResponseCode = connection.getResponseCode(); 
serverResponseMessage = connection.getResponseMessage(); 

fileInputStream.close(); 
outputStream.flush(); 
outputStream.close(); 
} 
catch (Exception ex) 
{ 
//Exception handling 
} 

我越來越堅持here..any幫助表示讚賞 感謝你想真正做什麼

+0

。上傳圖像到FTP服務器或simpel在服務器端與php交互? –

回答

5
public static String UplaodData(byte[] data , String text, String id, boolean personalCheck, boolean privateCheck, String ImageName, boolean isClaimNote, String url, String percentage, boolean showProgress) 
{ 
    HttpURLConnection connection = null; 
    DataOutputStream outputStream = null; 
    DataInputStream inputStream = null; 


    //String claimId = ClaimList.claimId; 

    String noteType = null; 
    String isImageFile = null; 

    String Responce     = ""; 
    String urlServer    = url; 
    String lineEnd     = "\r\n"; 
    String twoHyphens    = "--"; 
    String boundary     = "*****"; 
    System.out.println("Value of note type----------------------- "+noteType); 
    try 
    { 

     URL url1 = new URL(urlServer); 
     connection = (HttpURLConnection) url1.openConnection(); 

     // Allow Inputs & Outputs 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     connection.setUseCaches(false); 

     // Enable POST method 
     connection.setRequestMethod("POST"); 

     connection.setRequestProperty("Connection", "Keep-Alive"); 
     connection.setRequestProperty("Content-Type", "multipart/form-data; boundary="+boundary); 

     outputStream = new DataOutputStream(connection.getOutputStream()); 
     if (data != null) 
     { 
      outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
      outputStream.writeBytes("Content-Disposition: form-data; Content-type: image/png; name=\"attachment\"; filename=\""+ImageName+"\"" + lineEnd); 
      outputStream.writeBytes(lineEnd); 
      outputStream.write(data, 0, data.length); 
      outputStream.writeBytes(lineEnd); 
     } 

     if(isClaimNote){ 
      outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
      outputStream.writeBytes("Content-Disposition: form-data; name=\"claimId\"" + lineEnd); 
      outputStream.writeBytes(lineEnd); 
      outputStream.writeBytes(id); 
      outputStream.writeBytes(lineEnd); 
     }else{ 
      outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
      outputStream.writeBytes("Content-Disposition: form-data; name=\"activityId\"" + lineEnd); 
      outputStream.writeBytes(lineEnd); 
      outputStream.writeBytes(id); 
      outputStream.writeBytes(lineEnd); 
      if(showProgress){ 
       outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
       outputStream.writeBytes("Content-Disposition: form-data; name=\"activityResolution\"" + lineEnd); 
       outputStream.writeBytes(lineEnd); 
       outputStream.writeBytes(percentage); 
       outputStream.writeBytes(lineEnd); 
      } 
     } 

     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
     outputStream.writeBytes("Content-Disposition: form-data; name=\"noteType\"" + lineEnd); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(noteType); 
     outputStream.writeBytes(lineEnd); 

     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
     outputStream.writeBytes("Content-Disposition: form-data; name=\"noteText\"" + lineEnd); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(text); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
     outputStream.writeBytes("Content-Disposition: form-data; name=\"isImageFile\"" + lineEnd); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(isImageFile); 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

     inputStream = new DataInputStream(connection.getInputStream()); 

     int serverResponseCode = connection.getResponseCode(); 
     String serverResponseMessage = ""; 


     while ((serverResponseMessage = inputStream.readLine()) != null) 
     { 
       Responce = Responce + serverResponseMessage; 
     } 

     outputStream.flush(); 
     outputStream.close(); 
     return Responce; 

     } 
     catch (Exception ex) 
     { 
      Responce = ex.toString(); 
      return Responce; 
     } 
} 

Above is working code to upload multiparty data, customize this as per you parameter list 
+0

從上面的代碼中,您可以刪除未使用的參數,並在需要時以相同的方式添加更多。 – Vashishth

+0

謝謝我的朋友。他的工作很好......這正是我想要的 非常感謝......! –