Android(安卓)使用AsyncHttpClient文件上传与下载
16lz
2021-12-04
/** * 异步传输工具 * * @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入门)
——————————————————————–
更多相关文章
- 我的Android进阶之旅------>Android电话实例
- ADT下载地址整理
- ProgressBar播放动画
- Android(安卓)zip解压
- 最新版 Android(安卓)SDK 无法获取SDK包 的解决方案
- 我的Android进阶之旅------>Android电话实例
- AndroidManifest文件中android属性
- SeekBar自定义样式最优实现
- Android(安卓)文件系统与Android11 分区存储