2013-12-11 35 views
1

Hello Developer, 我在某些服務器中配置了盜版盒。 的鏈接,關於盜版盒子的細節如下: Pirated Box Android將文件從Android應用程序上傳到盜版盒

盜版盒子裏是用於上傳文件頹喪控制。 你可以看到在下面的鏈接頹喪的細節: Droopy Details

我能夠使用上傳到下垂盜版盒子的特定文件夾中的文件。 現在我想從android應用程序上傳文件到盜版盒子。任何人有想法如何做到這一點?

回答

0

只是回答我自己的問題。這是幫助我完成任務的代碼

public int uploadFile(String sourceFileUri) 
    { 
     int serverResponseCode =0; 
     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"); 
      return 0; 
     } 
     else 
     { 
      try 
      { 
       // open a URL connection to the Servlet 
       FileInputStream fileInputStream = new FileInputStream(sourceFile); 
       URL url = new URL("http://piratebox.lan:8080/"); 

       // Open a HTTP connection to the URL 
       conn = (HttpURLConnection) url.openConnection(); 
       conn.setDoInput(true); // Allow Inputs 
       conn.setDoOutput(true); // Allow Outputs 
       conn.setUseCaches(false); 
       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=\"upfile\"; filename=" + fileName + "" + lineEnd); 
       dos.writeBytes("Content-Type: image/png" + 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 neccesssary 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"; 
         } 
        }); 
       } 
       //close the streams 
       fileInputStream.close(); 
       dos.flush(); 
       dos.close(); 

      } 
      catch (Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
      return serverResponseCode; 

     } // End else block 
    } 
相關問題