2015-10-29 45 views
1

朋友你好我試圖上傳文件在服務器上,但我得到了內存不足的錯誤,而文件大小大,這裏是我上傳的代碼如何上傳文件到服務器沒有內存不足錯誤在Android?

private String apiCall(String action, List query, String formatOptionXml) 
     throws Exception { 

    String currentUrl = OnlineConvert.URL; 
    String xmlResponse = ""; 
    int maxbuffersize = 212144; 

    Log.d("main", "upload start "); 
    /* 
    * if (!"get-queue".equals(action)) { 
    * this.getServer(this.targetTypeOptions.get(this.targetType)); } 
    */ 
    try { 
     URL browser = new URL(currentUrl + "/" + action); 
     HttpURLConnection conn = (HttpURLConnection) browser.openConnection(); 

     String params = "queue=" + URLEncoder.encode(this.getMap2XML((Map) query.get(OnlineConvert.QUEUE_COMMAN_PARAMS),"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",formatOptionXml+ this.getFileMap2XML((Map) query.get(OnlineConvert.QUEUE_FILE_METADATA_PARAMS))),"UTF-8"); 

     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
     conn.setRequestProperty("Content-Length",String.valueOf(params.length())); 
     conn.setRequestProperty("connection", "close"); 
     conn.setUseCaches(false); 
     conn.setDoOutput(true); 
     conn.setChunkedStreamingMode(maxbuffersize); 
     conn.setDoInput(true); 

     OutputStream wr = conn.getOutputStream(); 
     wr.write(params.getBytes()); 

     /*bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize];*/ 
     wr.flush(); 
     // Get the response 
     int statusCode = conn.getResponseCode(); 
     BufferedReader in = null; 
     String inputLine; 
     StringBuilder response = new StringBuilder(); 
     if (statusCode >= 200 && statusCode < 400) { 
      in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 
     } else { 
      in = new BufferedReader(new InputStreamReader(conn.getErrorStream())); 
     } 

     xmlResponse = response.toString(); 

     wr.close(); 
     in.close(); 

    } catch (MalformedURLException e) { 
     Log.d("main", "MalformedURLException " + e); 
     throw new MalformedURLException(
       "Error downloading pathway overview images :" 
         + e.getMessage()); 
    } catch (IOException e) { 
     Log.d("main", "IOException " + e); 
     throw new IOException("Error In IOException :" + e.getMessage()); 
    } catch (Exception e) { 
     Log.d("main", "Exception " + e); 
     throw new Exception("Exception :" + e.getMessage()); 
    } 
    Log.d("main", "upload done"); 
    return xmlResponse; 
} 

任何一個可以幫我解決這個問題?在不同的設備中,文件的大小是不同的。我不知道什麼是實際問題

回答

0

縮小圖像,因爲圖像的字節數組大小太大。

相關問題