Android xutils3同时上传多张图片及上传服务的终止

使用xutils拍照或从SD卡选图片上传 xutils上传图片网上找了好多,demo比较少,而且都没有写一个清晰的流程,so。。自己写的 立即下载

项目中,上传图片功能要求,可根据用户的选择一次上传1-10张图片,并且在上传时仿QQ发送图片时的样式显示上传进度;在退出上传界面再次进入时,进度要继续刷新,在上传因意外中止时在图片中出现刷新按钮,显现“上传失败”,点击刷新按钮可再次上传,如下图所示:


以下对该功能要求的代码逻辑进行说明,Demo后面会上传到资源:
1.在adapter数据适配器中,设置接口回调,在getView()方法中每加载一张图片就在回调方法中进行网络请求,实现此步骤时会遇到同一张图片在getView()方法中加载多次的问题,这样会导致同一张图片多次上传;解决方法是在adapter中新建一个HashMap,代码如下:

  if (Bimp.drr.size()!=0&&!maps.containsKey(Bimp.drr.get(i))){//此时不包含,加入
            maps.put(Bimp.drr.get(i),holder.img_to_upload);
            textMaps.put(Bimp.drr.get(i),holder.tv_upload_fail);
            lineMaps.put(Bimp.drr.get(i),holder.iconfont_title_upload);
            if (UploadFileActivity.uploadImgs.size()==Bimp.drr.size()){//此时非第一次加载
                UploadFileActivity.uploadImgs.put(Bimp.drr.get(i),holder.img_to_upload);
                UploadFileActivity.uploadErrorTexts.put(Bimp.drr.get(i),holder.tv_upload_fail);
                UploadFileActivity.uploadErrorLines.put(Bimp.drr.get(i),holder.iconfont_title_upload);
            }
            loadDatas.loadData(i,maps,textMaps,lineMaps);
        }

maps即为新建的HashMap对象,这样在每次执行getView()时,同一张图片只会请求一次,loadDatas.loadData();为接口回调的方法

2.从上传界面退出再进入时,adapter会重新加载数据,maps也会重新创建,因此为继续能加载上传图片的进度,使用静态变量的HashMap,实时更新保存当前adapter加载的控件,继续刷新上传进度,上述代码中以UploadFileActivity开始的变量即为存储adapter当前控件的HashMap,这样可保持adapter数据的实时更新,上传图片的代码为:

/**
	 * 上传图片,只支持单张上传
	 * @param url 上传图片的url地址
	 * @param filePath 上传图片文件的路径
	 * @param tab 上传的标识
     */
	public void uploadImg(String url, final String filePath, final int tab){
		RequestParams params=new RequestParams(url);

		params.setMultipart(true);//设置表单传送
		params.setCancelFast(true);//设置可以立即被停止
		params.addBodyParameter("Filedata", new File(filePath),"multipart/form-data");

		Callback.Cancelable cancelable=x.http().post(params, new Callback.ProgressCallback<String>() {
			@Override
			public void onSuccess(String result) {
				Log.i("uploadImg","result-->"+result);
				if (mCallback!=null){
					mCallback.successCallback(tab,result);
				}
			}

			@Override
			public void onError(Throwable ex, boolean isOnCallback) {
				Log.i("uploadImg","ex-->"+ex.getMessage());
				if (mCallback!=null){
					mCallback.errorCallback(tab);
				}

				if (scheduleCallback!=null){
					scheduleCallback.uploadErrorCallback(filePath);
				}
			}

			@Override
			public void onCancelled(CancelledException cex) {
				Log.i("upload","onCancelled");
			}

			@Override
			public void onFinished() {
			}

			@Override
			public void onWaiting() {

			}

			@Override
			public void onStarted() {

			}

			@Override
			public void onLoading(long total, long current, boolean isDownloading) {

			/*	Log.i("uploadImg","total-->"+total);
				Log.i("upload","isDownloading-->"+isDownloading);
				Log.i("uploadImg","current-->"+current);*/
				if (scheduleCallback!=null){
					scheduleCallback.uploadScheduleCallback(total,current,filePath);
				}
			}
		});
		
		//cancelable.cancel();//终止上传
	}


在设置为表单传送时,需设置params.setMultipart(true);//设置表单传送,参数params.addBodyParameter("Filedata", new File(filePath),"multipart/form-data");其中“FileData”可随意设置,params.setCancelFast(true);表示可中断传送,若想终止上传服务,调用cancelable.cancel();即可
Android基于xUtils上传图片带服务端下载 Android基于xUtils实现的图片上传,可以调用系统相机,访问图库选择图片,选择完毕后进行裁剪,然后上传到服务器 立即下载

相关推荐

Android使用xUtils3.0实现文件上传

主要为大家详细介绍了Android使用xUtils3.0实现文件上传的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

android一个上传图片的样例,包含怎样终止上传过程,假设在上传的时候更新进度条(一)...

先上效果图: Layout为: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" androi...

weixin_33722405的博客 146

在线考试系统源码+数据库+word+ppt(高分毕业设计)

本系统通过Spring Cloud实现微服务拆分,将授权、考试、监控等功能解耦,既保证了系统的扩展性,也便于后期维护。基于OAuth2.0的单点登录,解决多服务统一认证问题;考试与练习模式分离,满足不同场景需求;集成Druid与Hystrix,保障系统监控与稳定性。

weixin_44355158的博客 737

android一个上传图片的例子,包括如何终止上传过程,如果在上传的时候更新进度条(一)

先上效果图: Layout为: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@

baidu_nod的专栏 1714

FineReport SQL查询分页

打开模板>模板web属性>分页预览设置,选择为该模板单独设置,将默认的工具栏按钮全部清除掉,然后依次添加两个自定义按钮,一个邮件按钮,两个自定义按钮,一个Word格式,一个PDF按钮。如下所示:注:使用具体格式按钮,如邮件、Word格式、PDF按钮是为了JS直接使用控件名称获取空间方便修改其内容;

lep的博客 2427

DrissionPage实战:5分钟搞定京东滑块验证码自动登录(附完整轨迹生成代码)

本文详细介绍了如何使用DrissionPage工具实现京东滑块验证码的自动化登录,包括环境配置、滑块缺口识别、拟人化轨迹生成算法及完整登录流程。通过物理运动学模型和智能识别技术,有效提升验证码破解成功率,适用于电商自动化场景。

weixin_29229055的博客 243

android等待多个线程结束,android实现多线程下载文件(支持暂停、取消、断点续传)...

多线程下载文件(支持暂停、取消、断点续传)多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来即可。涉及的知识及问题请求的数据如何分段分段完成后如何下载和下载完成后如何组装到一起暂停下载和继续下载的实现(wait()、notifyAll()、synchronized的...

weixin_30215717的博客 552

Unity中5自由度机械臂运动控制与夹爪交互仿真实践

本文详细介绍了在Unity中实现5自由度机械臂运动控制与夹爪交互仿真的完整流程。从模型导入、物理组件配置到关节运动控制算法(包括逆运动学IK),再到夹爪抓取逻辑和工业分拣案例实战,提供了可落地的代码示例与性能优化方案,助力开发者快速掌握机械臂仿真核心技术。

weixin_29021757的博客 446

Android实现图片上传,可以选择多张图片,缩放预览,拍照上传等

Android实现图片上传

永青技术博客 1771

【项目分享】RailTracker: 火车票务数据采集与分析

从12306使用爬虫爬取火车站及车次信息、火车票价 通过本项目,我们将带领访问者手把手完成火车票数据采集、数据清洗、数据集成、可视化的一整个流程!

zhushatong的博客 3343

从零实现反激式电源仿真:LTspice高级应用实例

深入解析反激式开关电源的建模与仿真过程,利用LTspice实现从零搭建电路,精准验证电路仿真效果,提升电源设计效率与可靠性。

weixin_36149538的博客 1896

Android中文件下载服务的记录(开始、暂停、取消、断点续传等)

本篇主要介绍的是利用服务来进行文件下载功能,其中支持:开始下载,暂停下载,取消下载,断点续传等功能。 步骤如下: 一、添加远程依赖库okhttp3,这是目前最好用的一款网络服务框架。 /*okHttp网络请求*/ implementation 'com.squareup.okhttp3:okhttp:3.12.0' 二、写一个接口,用于对下载过程中的各种状态进行监听和回调。 /** ...

lpCrazyBoy的博客 3964

别再乱点U盘里的.exe了!手把手教你清除‘Usb Disk.exe’病毒并恢复隐藏文件

本文详细介绍了如何识别和清除U盘病毒(如Usb Disk.exe),并提供从终止病毒进程到恢复隐藏文件的完整步骤。通过禁用自动播放、清理注册表和使用命令行工具,帮助用户彻底清除病毒并预防未来感染,确保数据安全。

weixin_42530732的博客 590

Android 使用多线程来做多文件上传Or下载

在Android中当需要上传或者下载多个图片或者文件到手机时,往往需要开启多个线程工作来提高效率。多线程的调度就需要用到线程池了,由于Android是基于java语言实现,所以Android中用到的多线程跟java中的多线程是一样的。下面介绍下java的线程池。线程池分类 (1)newCachedThreadPool 创建一个可缓存线程池,如果线程池线程数量超过处理需要,可灵活回收空闲线程

qq402164452的博客 8412

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android一个上传图片的例子,包括如何终止上传过程,如果在上传的时候更新进度条(二)

可以这样来实现上传: activity中执行: private class UploadPhotoTask extends AsyncTask{ @Override protected void onPreExecute() { super.onPreExecute(); } protected Boolean doInBackground(String.

baidu_nod的专栏 2563

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android xUtils3源码解析之图片模块

本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。 xUtils3源码解析之图片模块,图片加载所需要的一切,都在这里~

一口仨馍 4678

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

xutils3.0 多文件上传

目前我只能这样上传单个文件和多个文件成功, 如果有哪位有好的方法,可以留言,大家共同参考 params= new RequestParams(path); //构建RequestParams对象,传入请求的服务器地址URL if (fileNameList.size()==1){//单个文件 List list = new ArrayList; list.add(new Key

qq_24688461的博客 973

xUtils3 大文件上传终极指南:支持超大文件传输的完整流程

xUtils3 是 Android 开发中功能强大的开源工具库,提供了文件上传、网络请求、图片加载等核心功能。对于需要处理大文件上传的开发者来说,xUtils3 的文件上传功能提供了简单易用的解决方案,支持超大文件传输和进度监控。 ## 🚀 xUtils3 文件上传核心优势 xUtils3 的文件上传功能具有以下突出特点: - **支持超大文件传输**:能够处理 GB 级别的大文件 - *

gitblog_00753的博客 408

xutils找id空指针_xutils3上传图片

xutils是国内wyoufif大神写的一个牛逼的开源库,功能挺全面的(单图上传、批量上传(图片)文件、加载网路图片等)。但是xutils以前的版本是基于httpclient的,者本来对于android没什么影响的。但是谷歌偏偏在android6.0以后的版本删除了httpClient,这就让我们无法正确的使用xutils了,于是xutils的作者wyoufif在前不久对对xutils版本进行大量...

weixin_27719109的博客 281

Xutils之BitmapUtils使用

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)。 private void loadBitmap(){ BitmapUtils bitmapUtils = new BitmapUtils(this); // 加载网络图片,以下都可以配置Bitm...

孤云博客 4194

Android端使用xUtils3.0实现文件上传

几个月前写过一篇博客《xUtils3.0框架学习笔记》,上面也有记录通过xUtils实现文件上传的使用方法,代码如下:private void upLoadOnClick(View v) { String upUrl = "/mnt/sdcard/pic/test.jpg";//指定要上传的文件 final ProgressDialog dia = new Progr

true100的专栏 1万+

xutils3 批量文件上传

Xutil3批量上传文件  前几天开发安卓要用到文件批量上传,就是上传图片,视频,文件之类的用到Xutil3框架,用 RequestParams params = new RequestParams(url);params.addParameter("file", new File(file)); 只能上传单张,不可能上传多张于是采用for循环,for(int i=0;i

qq_26297155的博客 3471

xutils上传多图片

 //图片地址链接 String[] filePaths = { filePath1,filePath2,filePath3,filePath4};  /** 上传图片 */    private void upPics() {     RequestParams params = new RequestParams();     for (int i = 0; i  

a2012s的专栏 4664

xutils3 上传文件操作——个人小计

上传文件注意: 使用KeyValue对象进行添加文件操作 int uid = 2; //普通字段的...

weixin_30716141的博客 247

Android使用xUtils3上传文件

xUtils3使用HttpUrlConnection来发送http请求,可以实现最大2G的大文件上传。 1.首先还是在application中初始化:x.Ext.init(this); 2.然后使用org.xutils.http包下的RequestParams来构造参数。 params = new RequestParams(url); params.addBodyParameter(

Julyraining的博客 1万+
上一篇: Android ScrollView中嵌套ExpandableListView,item不显示的问题
下一篇: Android 集成融云通信 部分间断手机弹框 程序停止运行 问题
解牛之术
博客等级 码龄11年 49粉丝 46原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值