OkHttp实现文件上传进度
Tagged Tags:

4月25日,福建水泥发布2019年第一季度报告。

文件上传就一个没刻度的进度条在那里转怎么行,本篇带你实现上传进度,为你的进度条添加刻度吧,啥都不说了,重点重写RequestBody,看代码

以下为2018年发行的各期记账式附息国债中标明细: 债券名称 招标时间 期限(
票面利 预测利 边际利率 发行规模 投标倍数 年) 率 率 2017年24期续发2 1/10
1 3.4972% 3.51% 3.5527% 200 2.67 2017年25期续发2 1/10 10 3.8499% 3.86%
3.8860% 200 2.82 2017年27期续发1 1/24 7 3.8592% 3.91% 3.9130% 200 2.51
续发2 2/7 3.8062% 3.85% 3.8671% 200 2.99 2018年第一期 1/17 5 3.81% 3.84%
3.86% 200 3.39 续发1 2/28 3.6566% 3.69% 3.6852% 200 3.13 续发2 3/14
3.6166% 3.68% 3.6693% 200 2.64 第二期 1/24 3 3.56% 3.59% 3.63% 200 2.33
续发1 2/7 3.5203% 3.56% 3.6014% 200 2.42 续发2 3/7 3.4685% 3.48% 3.5057%
200 2.44 第三期 1/31 1 3.38% 3.45% 3.44% 200 2.95 续发1 3/21 3.2127%
3.17% 3.2746% 200 2.26 续发2 4/25 2.9437% 2.90% 3.0214% 290 1.97 第四期
1/31 10 3.85% 3.91% 3.89% 200 3.09 续发1 3/21 3.7054% 3.75% 3.7471% 200
2.76 续发2 4/25 3.5509% 3.54% 3.5834% 290 2.09 2017年第22期续发 2/9 30
4.3011% 4.32% — 200 2.50 2 第五期 3/7 7 3.77% 3.80% 3.79% 200 2.84
续发1 4/11 3.6979% 3.72% 3.7309% 455.9 2.30 续发2 5/2 3.6276% — 3.6726%
410 1.87 第六期 3/16 30 4.22% 4.26% — 200 2.56 续发1 4/20 4.0031% 3.98%
— 303.3 1.91 续发2 6/15 4.1082% 4.10% — 298.7 1.75 第七期 4/11 3 3.42%
3.41% 3.48% 450 1.86 续发1 5/2 3.2016% — 3.2838% 410 1.74 续发2 6/6
3.3895% 3.41% 3.4190% 453.1 2.39 第八期 4/18 2 3.06% 3.22% 3.13% 290
2.08 续发1 5/9 3.0551% 3.05% 3.1319% 295.3 2.43 续发2 6/13 3.2784% 3.29%
3.3113% 290.6 2.19 第九期 4/18 5 3.17% 3.36% 3.23% 370 1.98 续发1 5/9
3.3491% 3.32% 3.3818% 410 2.03 续发2 6/13 3.4763% 3.50% 3.4957% 451.5
2.64 第10期 5/16 1 3.02% 2.95% 3.10% 410 1.77 续发1 6/20 3.2258% 3.15%
3.2947% 450.5 1.87 续发2 7/18 3.0328% 2.99% 3.0675% 370.1 2.27 第11期
5/16 10 3.69% 3.70% 3.73% 410.2 2.20 续发1 6/20 3.5480% 3.55% 3.5727%
450 2.07 续发2 7/18 3.4338% 3.46% 3.4613% 370 2.50 第12期 5/18 50 4.13%
4.22% — 305.2 2.24 第13期 6/6 7 3.61% 3.64% 3.65% 450 2.05 续发1 7/4
3.4746% 3.48% 3.5146% 370.1 2.02 续发2 8/1 3.4543% 3.47% 3.4777% 410
2.25 第14期 7/4 3 3.24% 3.25% 3.27% 371 2.02 续发1 8/1 3.0350% 3.03%
3.0749% 411 2.02 续发2 9/5 3.3018% 3.30% 3.3272% 451.5 2.32 第15期 7/11
2 3.14% 3.15% 3.18% 290.5 2.24 续发1 8/8 2.8295% 2.80% 2.8679% 290.1
2.17 续发2 9/12 3.1469% 3.13% 3.2058% 290 1.83 第16期 7/11 5 3.30% 3.31%
3.34% 371.9 2.20 续发1 8/8 3.1341% 3.10% 3.1863% 410 1.89 续发2 9/12
3.4878% 3.49% 3.5247% 450.5 2.16 第17期 7/20 30 3.97% 3.93% — 304 1.68
续发1 8/17 4.2232% 4.11% — 302 1.70 续发2 9/14 4.2285% 4.25% — 304.5
2.33 第18期 8/15 1 2.79% 2.80% 2.86% 410 1.84 续发1 9/19 2.9234% 2.87%
3.0064% 450 1.60 续发2 10/24 2.8200% 2.86% 2.8823% 390.5 2.81 第19期
8/15 10 3.54% 3.54% 3.57% 410 1.97 续发1 9/19 3.6403% 3.64% 3.6594% 450
2.17 续发2 10/24 3.5017% 3.55% 3.5570% 390.5 2.40 第20期 9/5 7 3.60%
3.60% 3.63% 450 1.95 10/10 3.5461% 3.59% 3.6149% 390.5 2.19 11/7 3.4443%
3.47% 3.4785% 351.2 2.75 第21期 10/10 3 3.17% 3.20% 3.22% 390.2 2.31
续发1 11/7 3.0729% 3.11% 3.1118% 350 2.76 续发2 12/5 2.8292% 2.94%
2.9067% 480.3 2.17 第22期 10/17 2 3.00% 3.11% 3.12% 290 2.11 续发1 11/14
2.7265% 2.88% 2.7928% 201.2 2.56 续发2 12/12 2.6009% 2.67% 2.6880% 290
1.94 第23期 10/17 5 3.29% 3.38% 3.37% 390.7 2.42 续发1 11/14 5 3.0737%
3.23% 3.1009% 262.9 2.98 续发2 12/12 2.9269% 2.97% 2.9819% 480 2.15
第24期 10/19 30 4.08% 4.14% — 302.4 2.56 续发1 12/14 3.8244% 3.82% —
398.2 1.90 第25期 11/16 50 3.82% 3.98% — 206.4 3.08 第26期 11/21 1
2.41% 2.52% 2.49% 261.6 2.12 续发1 12/19 2.6385% 2.57% 2.7435% 390 1.56
第27期 11/21 10 3.25% 3.35% 3.30% 264.6 2.91 续发1 12/19 3.2875% 3.36%
3.3526% 480.9 2.21 第28期 12/5 7 3.22% 3.30% 3.27% 482.2 2.38 合计
26,725.8 以下为2018年发行的各期记账式贴现国债中标明细: 债券名称 招标时间
期限 加权收益率 边际收益率 发行规模 投标倍数 一期 1/5 91 3.2966% 3.3733%
100 3.45 二期 1/12 91 3.3101% 3.4059% 100 2.47 三期 1/12 182 3.5258%
3.6095% 100 2.66 四期 1/19 91 3.3354% 3.3978% 100 2.87 五期 1/26 91
3.2775% 3.3244% 100 3.52 六期 2/2 91 3.1784% 3.2347% 100 3.11 七期 2/2
182 3.3434% 3.3853% 100 3.21 八期 2/9 91 3.1564% 3.2102% 100 2.89 九期
2/23 91 3.1299% 3.1695% 100 3.32 10期 3/2 91 3.1246% 3.1695% 100 3.08
11期 3/9 91 3.0656% 3.1206% 100 3.31 12期 3/9 182 3.1823% 3.2361% 100
2.70 13期 3/16 91 3.0420% 3.0961% 100 2.97 14期 3/23 91 2.9080% 2.9740%
100 2.80 15期 3/30 91 2.9223% 2.9740% 100 2.34 16期 4/13 91 2.6067%
2.6486% 100 2.70 17期 4/13 182 2.9417% 3.0334% 101 2.18 18期 4/20 91
2.6242% 2.7218% 100.5 2.87 19期 4/27 91 2.6937% 2.8031% 100.3 3.12 20期
5/4 91 2.6287% 2.6811% 100 2.32 21期 5/11 91 2.6718% 2.7461% 100.1 2.26
22期 5/11 182 2.9132% 2.9673% 100.1 2.54 23期 5/18 91天 2.7441% 2.8275%
100 2.10 24期 5/25 91天 2.7982% 2.9007% 100 2.09 25期 6/1 91天 2.9247%
2.9984% 100 2.28 26期 6/8 91天 2.9068% 2.9658% 100.1 2.23 27期 6/8 182天
3.0206% 3.0871% 100 2.04 28期 6/15 91天 2.9166% 2.9821% 100 2.39 29期
6/22 91天 3.0371% 3.0880% 100 2.42 30期 6/29 91天 3.1218% 3.2265% 100
2.18 31期 7/6 91天 2.4227% 2.5511% 100 2.63 32期 7/13 91天 2.4938%
2.5836% 100 2.23 33期 7/13 182天 2.8191% 2.9218% 100 1.86 34期 7/20 91天
2.3939% 2.4455% 100.7 3.07 35期 7/27 91天 2.2629% 2.3481% 100.3 2.62
36期 8/3 91天 2.1185% 2.1939% 100 2.92 37期 8/10 91天 1.9653% 2.0480%
100.1 2.36 38期 8/10 182天 2.4155% 2.4975% 100 2.23 39期 8/17 91天
2.0885% 2.1534% 100.3 2.46 40期 8/24 91天 2.1307% 2.1696% 100.3 2.71
41期 8/31 91天 2.1201% 2.1696% 100 2.36 42期 9/7 91天 2.1254% 2.1696%
100 2.32 43期 9/7 182天 2.5413% 2.5839% 100 2.43 44期 9/12 91天 2.1209%
2.1534% 100.1 2.56 45期 9/21 91天 2.0735% 2.1209% 100 2.77 46期 10/12
91天 1.9269% 2.0561% 150 1.87 47期 10/12 182天 2.2398% 2.3783% 100 2.16
48期 10/19 91天 2.1712% 2.2588% 150 2.05 49期 10/26 91天 2.2207% 2.3156%
150 1.89 50期 11/2 91天 2.3193% 2.4861% 150 1.93 51期 11/9 91天 2.2507%
2.2994% 150.5 2.01 52期 11/9 182天 2.5147% 2.5962% 100 2.48 53期 11/16
91天 2.2158% 2.2588% 100 2.68 54期 11/23 91天 2.2377% 2.3156% 100.3 2.50
55期 11/30 91天 2.3379% 2.4049% 100.1 2.41 56期 12/7 91天 2.3704%
2.4536% 200 1.86 57期 12/7 182天 2.4784% 2.5592% 100.3 2.07 58期 12/14
91天 2.5535% 2.6892% 200 1.64 59期 12/21 91天 2.7100% 2.8193% 200 1.91
*60期 12/28 91天 2.5986% 2.6405% 154.7 3.56 合计 6,609.8
注:1.*代表新增 2.发行规模和认购额单位均为亿元人民币。
3.2017年国债发行中标明细表请点选
如欲了解中国债券情况,请在下列代码上按左鼠键点击两次

报告期内,公司营业收入5.77亿元,同比增加14.79%,归属于上市公司股东的净利润
7205.95万元,同比减少16.67%。
图片 1

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 class ProgressUploadFile {
    private static final OkHttpClient okHttpClient = new OkHttpClient();

    private void run() {

        MultipartBuilder builder = new MultipartBuilder().type(MultipartBuilder.FORM);

        File file = new File("D:\file.jpg");
        builder.addFormDataPart("file", file.getName(), createCustomRequestBody(MultipartBuilder.FORM, file, new ProgressListener() {
            @Override public void onProgress(long totalBytes, long remainingBytes, boolean done) {
                System.out.print((totalBytes - remainingBytes) * 100 / totalBytes + "%");
            }
        }));

        RequestBody requestBody = builder.build();

        Request request = new Request.Builder()
                .url("http://localhost:8080/upload") //地址
                .post(requestBody)
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override public void onFailure(Request request, IOException e) {

            }

            @Override public void onResponse(Response response) throws IOException {
                System.out.println("response.body().string() = " + response.body().string());

            }
        });
    }

    public static RequestBody createCustomRequestBody(final MediaType contentType, final File file, final ProgressListener listener) {
        return new RequestBody() {
            @Override public MediaType contentType() {
                return contentType;
            }

            @Override public long contentLength() {
                return file.length();
            }

            @Override public void writeTo(BufferedSink sink) throws IOException {
                Source source;
                try {
                    source = Okio.source(file);
                    //sink.writeAll(source);
                    Buffer buf = new Buffer();
                    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();
                }
            }
        };
    }

    interface ProgressListener {
        void onProgress(long totalBytes, long remainingBytes, boolean done);
    }

    public static void main(String[] args) {
        new ProgressUploadFile().run();

    }

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注