2015-09-05 59 views
1
AsyncHttpClient client = new AsyncHttpClient(); 
     RequestParams params = new RequestParams(); 

    File[] file = new File[imageArrayList.size()] 
    for(int i=0; i<imageArrayList.size(); i++) { 
     file[i] = new File(imageArrayList.get(i)); 
    } 

    params.put("uploadfile", file); 

我不知道如何處理php服務器網站。android使用異步Http客戶端如何上傳多個文件到服務器var php?

如何接收並保存到我的服務器文件夾?

$filePath = "uploads/" 
+0

對不起,你不清楚你問什麼。上面的代碼是_not_ php。 – arkascha

+0

我使用異步http客戶端上傳一些文件到服務器。我不知道如何接收並保存@ arkascha – hksfho

回答

0

我假設你已經從Android端使用具有的文件URI所以的AsyncTask此功能爲每個文件上傳多個文件

public int uploadFile(String sourceFileUri) { 

      String fileName = sourceFileUri; 

      HttpURLConnection conn = null; 
      DataOutputStream dos = null; 
      String lineEnd = "\r\n"; 
      String twoHyphens = "--"; 
      String boundary = "*****"; 
      int bytesRead, bytesAvailable, bufferSize; 
      byte[] buffer; 
      int maxBufferSize = 1 * 1024 * 1024; 
      File sourceFile = new File(sourceFileUri); 

      if (!sourceFile.isFile()) { 


       Log.e("uploadFile", "Source File not exist :" 
            +uploadFilePath + "" + uploadFileName); 

       runOnUiThread(new Runnable() { 
        public void run() { 
         messageText.setText("Source File not exist :" 
           +uploadFilePath + "" + uploadFileName); 
        } 
       }); 

       return 0; 

      } 
      else 
      { 
       try { 

        // open a URL connection to the Servlet 
        FileInputStream fileInputStream = new FileInputStream(sourceFile); 
        URL url = new URL("http://example.com/server.php"); 

        // Open a HTTP connection to the URL 
        conn = (HttpURLConnection) url.openConnection(); 
        conn.setDoInput(true); // Allow Inputs 
        conn.setDoOutput(true); // Allow Outputs 
        conn.setUseCaches(false); // Don't use a Cached Copy 
        conn.setRequestMethod("POST"); 
        conn.setRequestProperty("Connection", "Keep-Alive"); 
        conn.setRequestProperty("ENCTYPE", "multipart/form-data"); 
        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
        conn.setRequestProperty("uploaded_file", fileName); 

        dos = new DataOutputStream(conn.getOutputStream()); 

        dos.writeBytes(twoHyphens + boundary + lineEnd); 
        dos.writeBytes("Content-Disposition: form-data; name="uploaded_file";filename="" 
              + fileName + """ + 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); 

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

        Log.i("uploadFile", "HTTP Response is : " 
          + serverResponseMessage + ": " + serverResponseCode); 

        if(serverResponseCode == 200){ 

         runOnUiThread(new Runnable() { 
          public void run() { 

           String msg = "File Upload Completed. : " 
               +uploadFileName; 

           messageText.setText(msg); 
           Toast.makeText(UploadToServer.this, "File Upload Complete.", 
              Toast.LENGTH_SHORT).show(); 
          } 
         });     
        }  

        //close the streams // 
        fileInputStream.close(); 
        dos.flush(); 
        dos.close(); 

       } catch (MalformedURLException ex) { 


        ex.printStackTrace(); 

        runOnUiThread(new Runnable() { 
         public void run() { 
          messageText.setText("MalformedURLException Exception : check script url."); 
          Toast.makeText(UploadToServer.this, "MalformedURLException", 
                   Toast.LENGTH_SHORT).show(); 
         } 
        }); 

        Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
       } catch (Exception e) { 


        e.printStackTrace(); 

        runOnUiThread(new Runnable() { 
         public void run() { 
          messageText.setText("Got Exception : see logcat "); 
          Toast.makeText(UploadToServer.this, "Got Exception : see logcat ", 
            Toast.LENGTH_SHORT).show(); 
         } 
        }); 
        Log.e("Upload file to server Exception", "Exception : " 
                + e.getMessage(), e); 
       } 

       return serverResponseCode; 

      } 
     } 

,並從服務器端server.php

$file_path = "uploads/"; 

$file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "Upload Complete"; 
} else{ 
    echo "Upload Fail"; 
} 
相關問題