/**
* 异步传输工具
*
* @author chen.lin
*
*/
@SuppressWarnings("deprecation")
public class AsyncHttpUtil {
private static boolean isSuccess = false;
/**
* 异步上传文件
*
* @param path
* :文件路径
* @param url
* :上传的url
*/
public static boolean uploadFile(final Context context, String path, String url, String filename,
final ProgressDialog progress) throws Exception {
File file = new File(path);
if (file.exists() && file.length() > 0) {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("uploadfile", file);
params.put("newFilename", filename);
// 设置进度条最大值
progress.setMax(Integer.parseInt(file.length() + ""));
// 上传文件
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
// 上传成功后要做的工作
progress.dismiss();
Toast.makeText(context, "上传成功", Toast.LENGTH_LONG).show();
// progress.setProgress(0);
isSuccess = true;
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
progress.dismiss();
Toast.makeText(context, "上传失败", Toast.LENGTH_LONG).show();
isSuccess = false;
}
@Override
public void onProgress(long bytesWritten, long totalSize) {
int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
// 上传进度显示
progress.setProgress(count);
super.onProgress(bytesWritten, totalSize);
}
@Override
public void onRetry(int retryNo) {
super.onRetry(retryNo);
// 返回重试次数
}
});
} else {
progress.dismiss();
Toast.makeText(context, "文件不存在", Toast.LENGTH_LONG).show();
}
return isSuccess;
}
/**
* @param url
* 要下载的文件URL
* @throws Exception
*/
public static void downloadFile(final Context mContext, String url, final ProgressDialog progress) throws Exception {
AsyncHttpClient client = new AsyncHttpClient();
// 指定文件类型
String[] fileTypes = new String[] { "image/png", "image/jpeg" };
// 获取二进制数据如图片和其他文件
client.get(url, new BinaryHttpResponseHandler(fileTypes) {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] binaryData) {
String tempPath = Environment.getExternalStorageDirectory().getPath() + "/temp.jpg";
// TODO Auto-generated method stub
// 下载成功后需要做的工作
progress.setProgress(0);
//
Logger.e("binaryData:", "共下载了:" + binaryData.length);
//
Bitmap bmp = BitmapFactory.decodeByteArray(binaryData, 0, binaryData.length);
File file = new File(tempPath);
// 压缩格式
CompressFormat format = Bitmap.CompressFormat.JPEG;
// 压缩比例
int quality = 100;
try {
// 若存在则删除
if (file.exists())
file.delete();
// 创建文件
file.createNewFile();
//
OutputStream stream = new FileOutputStream(file);
// 压缩输出
bmp.compress(format, quality, stream);
// 关闭
stream.close();
//
Toast.makeText(mContext, "下载成功\n" + tempPath, Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] binaryData, Throwable error) {
Toast.makeText(mContext, "下载失败", Toast.LENGTH_LONG).show();
}
@Override
public void onProgress(long bytesWritten, long totalSize) {
int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
// 下载进度显示
progress.setProgress(count);
Logger.e("下载 Progress>>>>>", bytesWritten + " / " + totalSize);
super.onProgress(bytesWritten, totalSize);
}
@Override
public void onRetry(int retryNo) {
super.onRetry(retryNo);
// 返回重试次数
}
});
}
}
———————————————————————
(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
有需求者请进站查看,非诚勿扰
https://item.taobao.com/item.htm?spm=686.1000925.0.0.4a155084hc8wek&id=555888526201
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
——————————————————————–