【发布时间】:2015-08-20 11:54:35
【问题描述】:
较小的文件已成功上传到服务器,但是当涉及较大的文件时,以下代码会引发内存不足错误。任何解决方案? .提前致谢。
public void addFilePart(String fieldName, File uploadFile)
throws IOException {
String fileName = uploadFile.getName();
writer.append("--" + boundary).append(LINE_FEED);
writer.append(
"Content-Disposition: form-data; name=\"" + fieldName
+ "\"; filename=\"" + fileName + "\"")
.append(LINE_FEED);
writer.append(
"Content-Type: "
+ URLConnection.guessContentTypeFromName(fileName))
.append(LINE_FEED);
writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
writer.append(LINE_FEED);
writer.flush();
FileInputStream inputStream = new FileInputStream(uploadFile);
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
inputStream.close();
writer.append(LINE_FEED);
writer.flush();
}
【问题讨论】:
-
使用一些更好的 HTTP 客户端 API,它允许您流式传输您的正文,而不必先将正文加载到内存中。 OkHttpappears to be able to handle this.
-
你为什么同时使用输出流和写入器?他们不会干涉吗?
标签: java android android-file