2013-02-28 161 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

相关问题