2016-11-29 178 views
0

如何在NanoHttpd服務方法中檢索POST參數。這是我的HTML表單波紋管將文件上傳到nanoHttpd服務器Android

<form name="a" enctype="multipart/form-data\ method="post" >" 
    <input type="file" name"file" multiple/>"+ 
    <input type="hidden" name="extradata" value="test"/> 
    <input type="submit" value="upload" > 
</form> 

我不是能夠得到即使內容長度的文件被提交直通形式

public Response serve(IHTTPSession session) { 
     Map<String, String> params = session.getParms();       
     Map<String, String> files = new HashMap<String, String>(); 
     if (Method.POST.equals(session.getMethod()) || Method.PUT.equals(session.getMethod())) { 
      try { 
       session.parseBody(files);  
       StringBuilder builder = new StringBuilder();  
       builder.append("| conLen " + (session.getHeaders().get("content-length")) + "| \n");  
       Set keys = files.keySet(); 
       for (Object key : keys) { 
        builder.append(" key: " + key + " value: " + files.get(key) + "\n"); 
       } 
       return new Response(builder.toString()); 
      } catch (Exception ex) { 
       Log.d("server", ex.toString()); 
      } 

     } 

} 

}

而從這個代碼的迴應是:

conLen null key:postData value:------ WebKitFormBoundaryt5gZYrmlLiPVa6aM Content-Disposition:form-data; NAME = 「而額外」 測試------ WebKitFormBoundaryt5gZYrmlLiPVa6aM--

+0

請顯示完整的'serve()'功能。 – greenapps

+0

請使用其他'serve()'方法。有很多參數的那個。工作更容易。 – greenapps

回答

0
 if (Method.POST.equals(session.getMethod()) || Method.PUT.equals(session.getMethod())) { 
      Log.d("server","inside receive file!"); 
      try{session.parseBody(files);}catch (Exception e){Log.d("server","error on parseBody" +e.toString());} 


      File file = new File(files.get("uploadFile")); 
} 

其實這個問題是與NanoHTTPD服務器。我更改爲2.1.1版本,現在正在工作。通過上面的代碼,我可以獲取上傳的文件。