【发布时间】:2017-02-23 17:07:30
【问题描述】:
我正在尝试在服务器上上传文件并通过这种方式显示每秒上传的字节数:
public void RunUploadTest () {
try {
URL url = new URL(serverLink);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "video/mp4");
for(int i =0; i<10; i++) {
FileInputStream fis = new FileInputStream(myFileVideo);
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
int bytesWrite = 0;
byte[] buffer = new byte[512];
Stopwatch timer = new Stopwatch();
int read;
while ((read = fis.read(buffer)) != -1&& timer.elapsedTime()<1000) {
dos.write(buffer, 0, read);
dos.flush();
bytesWrite++;
}
Log.d("Upload", "Bytes written: " + bytesWrite*512);
}
fis.close();
} catch (IOException e){
e.printStackTrace();
}
}
问题在于没有像我预期的那样计算上传了多少字节。 你知道为什么不工作吗?
【问题讨论】:
-
您的预期如何?它如何计算?
-
您可以将输入流转换为字节数组并以这种方式获取计数stackoverflow.com/a/1264756/1754020
-
我希望每秒都能得到一个结果。相反,我从日志中读取了 D/Upload: bytes writtem: 1521152 十次,并且不是每秒都出现。 @DmytroGrynets
-
@EduardoDennis 我也尝试过这种方式,但结果是一样的:D/Upload: Byteswritten: 1521152 for 10 times.
标签: java android file-upload server