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

WindTerm 安装使用教程

WindTerm是一款Github上开源的 SSH 终端工具,它是完全可以比肩MobaXterm工具的。

m0_69576880的博客 4017

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

北京理工大学计算机学院赵曜,中国进出口银行2016年度拟接收毕业生情况公示...

《中国进出口银行2016年度拟接收毕业生情况公示》由会员分享,可在线阅读,更多相关《中国进出口银行2016年度拟接收毕业生情况公示(5页珍藏版)》请在技术文库上搜索。1、二级(三级)单位二级(三级)单位姓名姓名性别性别学历学历毕业学校毕业学校专业专业 中国进出口银行总行 机关 许凯男硕士研究生北京大学法学 中国进出口银行总行 机关 冯晨男硕士研究生北京大学教育技术学 中国进出口银行总行 机关 刘鹏...

weixin_42168902的博客 4273

c语言串口编程详解

串口: 一种异步通信接口,通常用于低速数据传输。RS-232: 最常见的串口标准,定义了电气特性、连接器和信号线。UART: 通用异步收发传输器,是实现串口通信的硬件模块。通过以上内容,你应能够理解并实现C语言在Windows和Linux平台上的串口编程。希望这本手册能帮助你在实际项目中顺利进行串口通信开发。如果有任何疑问或需要进一步的帮助,请随时提问。

jkzyx123的博客 2223

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

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

weixin_30215717的博客 552

面试问题总结——关于OpenCV(一)

整理了一下网上和我面试中遇到的关于OpenCV相关的问题。 其中因为我的简历中有个项目用到了特征点检测相关的知识,所以整理了SIFT/SURF和FLANN。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 关于OpenCV的内容 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题   深拷贝:分配新内存的同时拷贝数据,当被赋值的容器被修改时,原始容器数据不会改变。   浅拷贝:仅拷贝数据,当被赋值容器修改时,原始容器数据也会做同样改变。 OpenCV的Mat时,有几种赋值方式分别为:   深.

boss-dog 1万+

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

Android实现图片上传

永青技术博客 1771

让 ABAP 再次优雅:全面认知 ABAP Development Tools for SAP HANA(ADT)与可运行示例

本文介绍了ABAP开发工具ADT(ABAP Development Tools for SAP HANA)的核心概念与价值。ADT是基于Eclipse的现代化ABAP集成开发环境,支持ABAP Platform、S/4HANA等后端开发,提供代码编辑、CDS数据建模、质量检查等全流程功能,相比传统SAP GUI具有显著优势。文章详细阐述了ADT与SAP HANA的关系、关键能力模块(如代码重构、CDS建模、质量管控等),并通过一个制造企业案例说明其实际应用场景。最后提供了ADT安装指南和一个完整的ABAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 668

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

理论开篇,理解什么是编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3110

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

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

lpCrazyBoy的博客 3964

YOLO26 无损剪枝:稀疏训练 + 结构化通道裁剪

YOLO26 无损剪枝链路:YOLO26s (7.2M) → 稀疏训练 30 epoch (L1 on BN gamma, lam=0.01) → 阈值剪枝 50% (gamma<quantile(0.5)) → 结构化重建 Conv+BN → 微调 10 epoch (lr=1e-4) → YOLO26n (1.9M, mAP50 0.808, 仅降 0.6%)。核心贡献:稀疏训练让 BN gamma 趋向二元分布 (近 0 或近 1), 剪枝阈值可直接取 median 自动 50% 压缩。

m0_64661770的博客 263

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

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

qq402164452的博客 8412

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024 (以YOLO26最新目标检测模型为基础,融合C3k2_DEConv创新模块进行改进)

2502_91881744的博客 310

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

baidu_nod的专栏 2563

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android xUtils3源码解析之图片模块

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

一口仨馍 4678

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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、付费专栏及课程。

余额充值