/** * 下载图片 * * @param url 图片的Url * @param context 上下文 * @param savePath 保存路径 (目录)为空表示不保存 * @param imagefile 图片文件名称 如果为空则以url的图片名称做文件名称 只接受 .png和.jpg后缀路径 * @param callback 回调 * @return */ public static CustomRunnable<String, LoadImageRespone> downLoadImage( String url, final Context context, String savePath, final String imagefileName, final DownloadCallback callback) { if (url == null) { return null; } CustomRunnable<String, LoadImageRespone> customRunnable = new CustomRunnable<String, LoadImageRespone>(new String[] {url, savePath}) { @Override public LoadImageRespone executeTask(String... param) { String uri = param[0]; if (uri == null) { return new LoadImageRespone(); } String savePath = null; if (param.length > 1) { savePath = param[1]; } DefaultHttpClient client = new DefaultHttpClient(); HttpParams httParams = client.getParams(); HttpConnectionParams.setConnectionTimeout(httParams, 20000); HttpConnectionParams.setSoTimeout(httParams, 20000); HttpProtocolParams.setContentCharset(httParams, HTTP.UTF_8); HttpProtocolParams.setUseExpectContinue(httParams, false); if (OrongApplication.cookieStore != null) { client.setCookieStore(OrongApplication.cookieStore); } HttpGet get = new HttpGet(uri); LoadImageRespone respone = null; try { HttpResponse responese = client.execute(get); int responeseCode = responese.getStatusLine().getStatusCode(); if (responeseCode == HttpStatus.SC_OK) { HttpEntity httpentity = responese.getEntity(); InputStream imStream = httpentity.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(imStream); respone = new LoadImageRespone(bitmap); if (savePath != null) { File dire = FileUitls.createDirectory(context, savePath); if (dire.exists()) { String fileName = null; if (imagefileName != null && (imagefileName.endsWith(".jpg") || imagefileName.endsWith(".png"))) { fileName = "/" + imagefileName; } else { fileName = uri.substring(uri.lastIndexOf("/")); } File file = new File(dire + fileName); if (!file.exists()) { file.createNewFile(); FileOutputStream out = new FileOutputStream(file); if (bitmap != null) { bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); } out.flush(); out.close(); } respone.setFileSavePath(file); } } } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return respone; } @Override public void beforTask() { // TODO Auto-generated method stub callback.beforeDownload(); super.beforTask(); } @Override public void afterTask(LoadImageRespone result) { callback.loadCompleteCallback(result); super.afterTask(result); } }; ThreadPoolService.execute(customRunnable); return customRunnable; }
public static CustomRunnable<?, ?> imageUpload(UpLoadDatas datas, final UploadCallback callback) { CustomRunnable<UpLoadDatas, String> customRunnable = new CustomRunnable<UpLoadDatas, String>(datas) { @Override public String executeTask(UpLoadDatas... param) { UpLoadDatas upLoadDatas = param[0]; DefaultHttpClient httpclient = new DefaultHttpClient(); HttpParams httParams = httpclient.getParams(); HttpConnectionParams.setConnectionTimeout(httParams, 20000); HttpConnectionParams.setSoTimeout(httParams, 20000); HttpProtocolParams.setContentCharset(httParams, HTTP.UTF_8); HttpProtocolParams.setUseExpectContinue(httParams, false); if (OrongApplication.cookieStore != null) { httpclient.setCookieStore(OrongApplication.cookieStore); } // 设置通信协议版本 httpclient .getParams() .setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); HttpPost httppost = new HttpPost(upLoadDatas.getUrl()); File file = upLoadDatas.getImageFile(); MultipartEntity mpEntity = new MultipartEntity(); // 文件传输 ContentBody cbFile = new FileBody(file); StringBody imageStr = null; StringBody mothodStr = null; ArrayList<BasicNameValuePair> paramList = upLoadDatas.getParamList(); try { imageStr = new StringBody("image"); mpEntity.addPart("upType", imageStr); if (paramList != null) { for (BasicNameValuePair valuePair : paramList) { mpEntity.addPart(valuePair.getName(), new StringBody(valuePair.getValue())); } } } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } mpEntity.addPart("fileData", cbFile); // mpEntity.addPart(file.getName(), cbFile); // <input // type="file" // name="userfile" // /> 对应的 System.out.println(file.getName()); httppost.setEntity(mpEntity); HttpResponse responese; String result = null; try { responese = httpclient.execute(httppost); int responeseCode = responese.getStatusLine().getStatusCode(); if (responeseCode == HttpStatus.SC_OK) { result = EntityUtils.toString(responese.getEntity(), HTTP.UTF_8); System.out.println(result); return result; } else if (399 < responeseCode && responeseCode < 500) { // 请求无响应拒绝等 return String.valueOf(Constant.NO_RESPONSE); } else if (500 <= responeseCode && responeseCode < 600) { // 服务器出错出现异常 return String.valueOf(Constant.S_EXCEPTION); } else { // 其它异常 return String.valueOf(Constant.RESPONESE_EXCEPTION); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ConnectTimeoutException e) { e.printStackTrace(); return String.valueOf(Constant.TIMEOUT); } catch (UnknownHostException e) { // 网络状态是否可用 if (!NetUtils.isHasNet(upLoadDatas.getContext())) { return String.valueOf(Constant.NO_NETWORK); // 无可用网络 } else { e.printStackTrace(); return String.valueOf(Constant.RESPONESE_EXCEPTION); } } catch (IOException e) { e.printStackTrace(); return String.valueOf(Constant.RESPONESE_EXCEPTION); } httpclient.getConnectionManager().shutdown(); return result; } @Override public void beforTask() { // TODO Auto-generated method stub callback.beforeUpload(); super.beforTask(); } @Override public void afterTask(String result) { callback.afterUpload(result); super.afterTask(result); } }; ThreadPoolService.execute(customRunnable); return customRunnable; }