/** * 异步传输工具 * * @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);                // 返回重试次数            }        });    }}

更多相关文章

  1. 【从头学android】第一个程序,点按钮显示Hello World
  2. Android(安卓)studio 学习资料汇总
  3. [Android]读取properties配置文件.
  4. Android中创建文件以及文件夹
  5. android WebView 拍照上传图片兼容
  6. Android常用语句收集
  7. Android将assets中的zip压缩文件解压到SD卡
  8. android上传文件
  9. NPM 和webpack 的基础使用

随机推荐

  1. 简单总结RectF、Rect 和Matrix ,还有Pain
  2. Android 的系统属性(SystemProperties)设
  3. Android中关于手机震动
  4. android微信支付
  5. android 五种 布局文件
  6. Java乔晓松-android的四大组件之一Servic
  7. Android带头像的用户注册页面
  8. android获取今天周几的示例
  9. Android开发之常用代码片段
  10. android 2.3 电源管理