【发布时间】:2015-11-28 18:18:50
【问题描述】:
嗨朋友们,我正在使用 Web API 制作文件转换应用程序。为此我需要将我的文件发送到服务器我的代码完全运行我能够将文件发送到服务器但是当我选择大文件时它显示内存异常上传文件的代码在这里
private String apiCall(String action, List query, String formatOptionXml)
throws Exception {
String currentUrl = OnlineConvert.URL;
String xmlResponse = "";
Log.d("main", "upload start ");
/*
* if (!"get-queue".equals(action)) {
* this.getServer(this.targetTypeOptions.get(this.targetType)); }
*/
try {
//FileInputStream fi = new FileInputStream(new File(in.inputpath));
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.setDoInput(true);
OutputStream wr = conn.getOutputStream();
wr.write(params.getBytes());
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;
}
这样我可以上传小文件,但是当我尝试发送超过 10MB 的文件时,它会显示内存异常,所以请帮我解决这个问题
【问题讨论】:
-
您可以通过多部分来完成。请参阅此链接 - stackoverflow.com/questions/19026256/…
标签: android