2013-02-28 327 views
0

我對我的問題搜索了一下,但沒有發現任何東西。 我在win 7上創建了一個服務器,將文件從android手機上傳到it.but但我無法上傳文件。 我不知道是服務器設置/配置是真實的[server1的] [1]通過Android手機將文件上傳到服務器(IIS)

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

     String pathToOurFile = "/sdcard/test.txt"; //complete path of file from your android device 
     String urlServer = "http://www.rar.com/";// complete path of server 
     String lineEnd = "\r\n"; 
     String twoHyphens = "--"; 
     String boundary = "*****"; 
     Log.i("*******urlServer**1**", "urlServer "); 
     int bytesRead, bytesAvailable, bufferSize; 
     byte[] buffer; 
     int maxBufferSize = 1 * 1024 * 1024; 

     try { 
      FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 
      Log.i("*******fileInputStream******", "sent: "); 
      URL url = new URL(urlServer); 
      connection = (HttpURLConnection) url.openConnection(); 
      Log.i("*******HttpURLConnection**1**", "v "); 
      // 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); 
      Log.i("*******setRequestProperty**1**", "v "); 
      outputStream = new DataOutputStream(connection.getOutputStream()); 
      Log.i("*******DataOutputStream******", "DataOutputStream: "); 
      outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
      outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile + "\"" + lineEnd); 
      outputStream.writeBytes(lineEnd); 
      Log.i("*******lineEnd******", "writeBytes: "); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      buffer = new byte[bufferSize]; 

      // Read file 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
      Log.i("*******befwhile******", "byteread "); 
      Log.i("*******byteread******", String.valueOf(bytesRead)); 

      while (bytesRead > 0) { 
       outputStream.write(buffer, 0, bufferSize); 
       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
      } 
      Log.i("*******befwhile******", "end while "); 
      outputStream.writeBytes(lineEnd); 
      outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 
      Log.i("*******befwhile******", "twoHyphens "); 
      // Responses from the server (code and message) 
      int serverResponseCode = 0; 
      String serverResponseMessage = ""; 
      serverResponseCode = connection.getResponseCode(); 
      Log.i("*******befwhile******", "getResponseCode1 "); 
      serverResponseMessage = connection.getResponseMessage(); 
      Log.i("*******befwhile******", "getResponseMessage2 "); 

      fileInputStream.close(); 
      outputStream.flush(); 
      outputStream.close(); 
      Log.i("*******Sending******", "sent: Final***"); 
     } 
     catch (Exception ex) { 
      Log.i("*******exception&&" + ex.toString(), ex.getMessage()); 
      //Exception handling 
     } 

我也沒有意義outputStream.writeBytes的(「內容處置:?!表格數據;名稱= \「uploadedfile \」; filename = \「」+ pathToOurFile +「\」「+ lineEnd); 當我上面的代碼拼命地跑,它運行直到 Log.i( 「**befwhile*」, 「twoHyphens」); 請幫幫我!

回答

1

從文檔url.openConnection()返回URLConnection不是HttpURLConnection,所以方法getResponseCode()不存在。您向下轉換爲HttpURLConnection將不起作用。同樣所有數據將在沖洗方法後發送。

+0

謝謝,你有沒有簡單的例子? 「www.rar.com」的物理路徑是H:\ AndS,並且我在上面創建了上傳文件夾,這是真的嗎? – forumnode 2013-03-01 07:17:32

+0

哪裏可以找到上傳的文件在服務器?它的路徑在哪裏? – forumnode 2013-03-01 09:51:33