【发布时间】:2019-06-11 13:52:23
【问题描述】:
我正在开发 Android 操作系统上的文件上传应用程序。
基本上我使用的是 HttpURLConnection,它是必需的。
文件大小差不多,IOS很快,我用的是AFNetworking。
但是Android太慢了,请指教我缺少什么。
这是我使用的源代码。
谢谢。
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection)(new URL(url)).openConnection();
conn.setRequestMethod("PUT");
conn.setReadTimeout(3600*1000);
conn.setRequestProperty("Content-Type", "application/octet-stream");
File temp = new File(file_path);
int length = (int)temp.length();
conn.setFixedLengthStreamingMode(length);
conn.setUseCaches (false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "xxx");
conn.connect();
OutputStream out = new DataOutputStream(conn.getOutputStream());
InputStream in = new FileInputStream(file_path);
int bytesAvailable = in.available();
int maxBufferSize = 1024 * 300;
int totalSize = bytesAvailable;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];
long bytesRead = in.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{
out.write(buffer, 0, bufferSize);
bytesAvailable = in.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = in.read(buffer, 0, bufferSize);
}
out.flush();
out.close();
in.close();
InputStream is = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
rd.close();
is.close();
} catch (Exception e) {
return false;
} finally {
if(conn != null) {
conn.disconnect();
}
}
【问题讨论】:
-
你试过把你的文件分成若干块然后上传
-
感谢您的评论,但您的回答没有用,如果可能的话,请您提供示例代码吗?我也已经尝试过块模式。但没有幸运。
标签: android ios http file-upload upload