java - 获取上传进度

标签 java android

我的上传方法如下:

private void upload(String Server, String FilePath, String SavePath, String NewName) {
String end = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
try {
URL url = new URL(ActionUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Accept", "text/*");
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data;" + "name=\"folder\"" + end + end);
ds.write(SavePath.getBytes("UTF-8"));
ds.writeBytes(end);
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data;" + "name=\"Filedata\"; filename=\"");
ds.write(NewName.getBytes("UTF-8"));
ds.writeBytes("\"" + end);
ds.writeBytes(end);

FileInputStream fStream = new FileInputStream(uploadFile);
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int length = -1;
while((length = fStream.read(buffer)) != -1) {
ds.write(buffer, 0, length);
}       
ds.writeBytes(end);
ds.writeBytes(twoHyphens + boundary + twoHyphens + end);

fStream.close();
ds.flush();
InputStream is = con.getInputStream();
int ch;
StringBuffer b = new StringBuffer();
while((ch = is.read()) != -1) {
b.append((char)ch);
}
System.out.println("UPLOAD" + "SUCCESS");
ds.close();
}
catch(Exception e) {
e.printStackTrace();
}
}

我发现行 InputStream is = con.getInputStream(); 花费了大部分时间。 但是如何获取它发送的进度呢? 或者如何修改我的方法以“按部分”上传文件?

最佳答案

你可以试试下面的代码,

在调用上传方法之前首先显示一个进度对话框,

progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true);

new Thread ( new Runnable()
{
     public void run()
     {
      // your uploading code goes here
     }
}).start();

 Handler progressHandler = new Handler() 
 {

     public void handleMessage(Message msg1) 
     {

         progDailog.dismiss();
         }
 }

关于java - 获取上传进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156884/

相关文章:

java - 在 Android 中使用 GPS 定位 friend

java - 如何在主屏幕中显示警报对话框?

android - 错误 :Connection timed out: connect. 如果您使用 HTTP 代理,请在 IDE 或 Gradle 中配置代理设置

java - Java 基类的 Hibernate 注解

java - 在 Google App Engine 应用程序中注册 jdbc 驱动程序的正确方法

java - JAVA中使用多线程限制oracle连接数的解决方案

java - 如何使用 Rest-Assured 请求 POST API 发送 token 和正文值?

android - 在 getview 中多次调用 Sum 方法

android - 双 SIM 卡 Android

android - 如何在 flutter 中添加多个主题?