2017-07-17 35 views
0

我試圖通過HttpUrlConnection方法發送文件。
你如何處理服務器端的HttpUrlConnection?

URL url = new URL(SERVER_URL); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setDoInput(true);//Allow Inputs 
       connection.setDoOutput(true);//Allow Outputs 
       connection.setUseCaches(false);//Don't use a cached Copy 
       connection.setRequestMethod("POST"); 
       connection.setRequestProperty("Connection", "Keep-Alive"); 
       connection.setRequestProperty("ENCTYPE", "multipart/form-data"); 
       connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
       connection.setRequestProperty("uploaded_file",selectedFilePath); 

用dataOutputStream發送文件。

dataOutputStream.writeBytes(lineEnd); 
       dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

但不知道如何處理這HttlUrlConnection和FileOutputStream中的服務器端。

我不知道我做的是正確的,但試圖獲得輸入流與 簡單的RequestMapping。這是我的服務器端。

@RequestMapping(value="/fileUploadPage") 
    public String fileUpload(@Validated FileModel file, BindingResult result, ModelMap model,HttpServletRequest req) throws IOException { 

     How to handle 'httpUrlconnection outputstream' in here? 


} 
+0

沒有'ENCTYPE'標頭。 – SLaks

+0

你用什麼語言開發服務器端?在PHP中,您可以使用$ _FILE – Mohsen

+0

訪問多部分數據是否可以使用@Requestmapping處理文件輸出流? –

回答

0

問題中的代碼片斷顯示您正在使用spring。 Spring支持多部分文件上傳,請檢查documentation。在配置MultipartResolver後,您可以執行:

@PostMapping("/form") 
public String handleFormUpload(@RequestParam("name") String name, 
     @RequestParam("file") MultipartFile file) { 

    if (!file.isEmpty()) { 
     byte[] bytes = file.getBytes(); 
     // store the bytes somewhere 
     return "redirect:uploadSuccess"; 
    } 

    return "redirect:uploadFailure"; 
} 
+0

在客戶端。我正在使用DataOutputStream。服務器是不是必須使用inputstream? –

+0

Spring可以爲你做到這一點,並給你一個'MultipartFile'準備好使用,所以你不必處理較低級別的細節。 –

+0

我從原生Android發送DataoutputStream。我想使用dataoutputStream仍然在Android發送圖像或文件的權利? –