java post上传进度,OkHttp实现文件上传进度
文件上传就一个没刻度的进度条在那里转怎么行,本篇带你实现上传进度,为你的进度条添加刻度吧,啥都不说了,重点重写RequestBody,看代码
import com.squareup.okhttp.*;
import okio.Buffer;
import okio.BufferedSink;
import okio.Okio;
import okio.Source;
import java.io.File;
import java.io.IOException;public classProgressUploadFile {private static final OkHttpClient okHttpClient = newOkHttpClient();private voidrun() {
MultipartBuilder builder= newMultipartBuilder().type(MultipartBuilder.FORM);
File file= new File("D:\\file.jpg");
builder.addFormDataPart("file", file.getName(), createCustomRequestBody(MultipartBuilder.FORM, file, newProgressListener() {
@Overridepublic void onProgress(long totalBytes, longremainingBytes, boolean done) {
System.out.print((totalBytes - remainingBytes) * 100 / totalBytes + "%");
}
}));
RequestBody requestBody=builder.build();
Request request= newRequest.Builder()
.url("http://localhost:8080/upload") //地址
.post(requestBody)
.build();
okHttpClient.newCall(request).enqueue(newCallback() {
@Overridepublic voidonFailure(Request request, IOException e) {
}
@Overridepublic voidonResponse(Response response) throws IOException {
System.out.println("response.body().string() =" + response.body().string());
}
});
}public staticRequestBody createCustomRequestBody(final MediaType contentType, final File file, final ProgressListener listener) {return newRequestBody() {
@OverridepublicMediaType contentType() {returncontentType;
}
@Overridepublic longcontentLength() {returnfile.length();
}
@Overridepublic voidwriteTo(BufferedSink sink) throws IOException {
Source source;try{
source=Okio.source(file);//sink.writeAll(source);
Buffer buf = newBuffer();
Long remaining=contentLength();for (long readCount; (readCount = source.read(buf, 2048)) != -1; ) {
sink.write(buf, readCount);
listener.onProgress(contentLength(), remaining-= readCount, remaining == 0);
}
}catch(Exception e) {
e.printStackTrace();
}
}
};
}interfaceProgressListener {void onProgress(long totalBytes, longremainingBytes, boolean done);
}public static voidmain(String[] args) {newProgressUploadFile().run();
}
}
结果:
0%0%1%1%1%2%2%3%3%3%4%4%4%5%5%6%6%6%7%7%7%8%8%9%9%9%10%10%10%11%11%12%12%12%13%13%13%14%14%15%15%15%16%16%16%17%17%18%18%18%19%19%19%20%20%21%21%21%22%22%23%23%23%24%24%24%25%25%26%26%26%27%27%27%28%28%29%29%29%30%30%30%31%31%32%32%32%33%33%33%34%34%35%35%35%36%36%36%37%37%38%38%38%39%39%39%40%40%41%41%41%42%42%43%43%43%44%44%44%45%45%46%46%46%47%47%47%48%48%49%49%49%50%50%50%51%51%52%52%52%53%53%53%54%54%55%55%55%56%56%56%57%57%58%58%58%59%59%59%60%60%61%61%61%62%62%62%63%63%64%64%64%65%65%66%66%66%67%67%67%68%68%69%69%69%70%70%70%71%71%72%72%72%73%73%73%74%74%75%75%75%76%76%76%77%77%78%78%78%79%79%79%80%80%81%81%81%82%82%82%83%83%84%84%84%85%85%86%86%86%87%87%87%88%88%89%89%89%90%90%90%91%91%92%92%92%93%93%93%94%94%95%95%95%96%96%96%97%97%98%98%98%99%99%99%100%
response.body().string() = You successfully uploaded file.jpg !
Process finished with exit code 0
java post上传进度,OkHttp实现文件上传进度相关推荐
- java web 上传图片漏洞_Web安全:文件上传漏洞
原标题:Web安全:文件上传漏洞 一般将文件上传归类为直接文件上传与间接文件上传.直接文件上传就是服务器根本没有做任何安全过滤,导致攻击者可以直接上传小马文件及大马文件(如ASP.ASPX.PHP.J ...
- 基于Java实现企业微信群聊机器人-文件上传+消息推送(保证可用)
基于Java实现企业微信群聊机器人-文件上传+消息推送 1.pom.xml(注意版本尽量保持一致) 2.文件工具类 3.企业微信请求类 4.企业微信响应类 5.发送方法 6.企业微信机器人创建和配置 ...
- 文件上传linux服务器,Linux 文件上传Linux服务器
进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...
- SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)
SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...
- php 文件上传mime 类型,php文件上传类型(MIME)对照表
网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却 ...
- 00截断上传绕过_【文件上传与解析】文件上传与解析漏洞总结v1.0
点击上方"公众号" 可以订阅哦! Hello,各位小伙伴晚上好~ 这里是依旧勤劳写公众号的小编~ 今天本公众号将推出一个新的模块,那就是漏洞知识点总结模块!!!(此处应有掌声~) ...
- asp.net实现ftp上传代码(解决大文件上传问题)
asp.net实现ftp上传代码(解决大文件上传问题) 参考文章: (1)asp.net实现ftp上传代码(解决大文件上传问题) (2)https://www.cnblogs.com/LYunF/ar ...
- php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例
搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...
- SharePoint 2010 ——自定义上传页面与多文件上传解决方案
SharePoint 2010 --自定义上传页面与多文件上传解决方案 参考文章: (1)SharePoint 2010 --自定义上传页面与多文件上传解决方案 (2)https://www.cnbl ...
最新文章
- spring boot 完整集成jsp。(亲测可用)
- [Swift]LeetCode326. 3的幂 | Power of Three
- 解决win2003安装exchangeServer后关机慢的方法
- rabbitmq使用_Spring Boot中使用RabbitMQ
- html缩进快捷键_Windows IDEA 快捷键终极大全,果断收藏!
- 贴吧备份到本地浏览html,获取贴吧对应页html及写入文件
- 电能储存系统行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- UcOS-II 和linux比较
- 计算机课程屏幕录制,电脑录屏怎么录?游戏课程会议都能录制的实用方法
- 安装kafka+golang操作kafka
- 软件评测师--第11小时 安全测试和评估
- android 8.0+后台Service限制
- hdu 5312 Sequence(数学推导——三角形数)
- moment 秒级时间戳转格式
- 熊孩子太调皮,送他Airblock无人机变身小神童
- 使用Java写出九九乘法口诀表
- CityMaker学习教程10 示例代码的使用Javascript
- github使用ssh方式
- 深度优先搜索及python实现围棋“吃子”
- bolt数据库简单使用教程