前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口批量上传文件的实例

接口批量上传文件的实例

作者头像
FunTester
发布2019-10-15 16:14:29
1.7K0
发布2019-10-15 16:14:29
举报
文章被收录于专栏:FunTesterFunTester

本人在做接口测试中,遇到一个活儿,将一批图片上传到服务器,12000+,在一个文件夹中不同的文件夹里面,由于上传文件过多,只能写脚本批量上传。也算是自动化的一部分吧,经过测试和改良,终于完成,期间由于种种原因失败60+次,做了第二次上传,分享代码,供大家参考。

思路是先把文件的绝对地址拿出来,第一想核对一下文件数量,第二为了确定文件上传顺序,方便断点续传。

下面是获取文件路径的方法:

代码语言:javascript
复制
 1List<String> list = new ArrayList<>();
 2        int aaa = 0;
 3        File file = new File("/Users/Vicky/Desktop/aaa");
 4        output(file.getAbsolutePath());
 5        File[] files = file.listFiles();
 6        int length = files.length;
 7        for (int i = 0; i < length; i++) {
 8            if (files[i].isDirectory()) {
 9                File[] file1 = files[i].listFiles();
10                output(file1.length);
11                output(file1[0].getAbsolutePath());
12                for (int j = 0; j < file1.length; j++) {
13                    String name = file1[j].getAbsolutePath();
14//                    output(name);
15                    if (!name.contains("DS_Store")) {
16                        list.add(name);
17                        aaa++;
18                    }
19                }
20//            aaa++;
21            }
22//        output(files.length);
23        }
24        output(aaa, list.size());
25        Concurrent.saveRequestTimes(list);

下面是保存路径文件的方法:

代码语言:javascript
复制
 1/**
 2     * 获取文件夹下所有文件的绝对路径的方法
 3     *
 4     * @param path
 5     * @return
 6     */
 7    public static List<String> getAllFile(String path) {
 8        List<String> list = new ArrayList<>();
 9        File file = new File(path);
10        File[] files = file.listFiles();
11        int length = files.length;
12        for (int i = 0; i < length; i++) {
13            File file1 = files[i];
14            if (file1.isDirectory()) {
15                List<String> allFile = getAllFile(file1.getAbsolutePath());
16                list.addAll(allFile);
17                continue;
18            }
19            String path1 = file1.getAbsolutePath();
20            if (path1.contains("/.")) continue;
21            list.add(path1);
22        }
23        return list;
24    }

下面是执行请求的方法:

代码语言:javascript
复制
 1Admin admin = new Admin();
 2        List<String> list = readTxtFileByLine("/Users/Vicky/Documents/workspace/fission/log/test.log");
 3        List<Integer> list1 = new ArrayList<>();
 4        int size = list.size();
 5        output(size);
 6        try {
 7            for (int i = 0; i < size; i++) {
 8                String pic = list.get(i);
 9                admin.update(pic);
10                list1.add(i);
11                output(i + pic);
12            }
13        } catch (Exception e) {
14            output("", e);
15//        } finally {
16//            logLog(list1.toString());
17        }
18//        admin.update();
19        testOver();

其中updata方法就不写了,只是一个普通的上传文件的post请求而已。

其中读取文件并返回list集合的方法如下:

代码语言:javascript
复制
 1/**
 2     * 分行读取txt文档,默认使用utf-8编码格式
 3     *
 4     * @param filePath 文件路径
 5     * @return 返回list数组
 6     */
 7    public static List<String> readTxtFileByLine(String filePath) {
 8        List<String> lines = new ArrayList<>();
 9        try {
10            String encoding = "utf-8";
11            File file = new File(filePath);
12            if (file.isFile() && file.exists()) { // 判断文件是否存在
13                FileInputStream fileInputStream = new FileInputStream(file);
14                InputStreamReader read = new InputStreamReader(fileInputStream, encoding);// 考虑到编码格式
15                BufferedReader bufferedReader = new BufferedReader(read);
16                String line = null;
17                while ((line = bufferedReader.readLine()) != null) {
18                    lines.add(line);
19                }
20                bufferedReader.close();
21                read.close();
22                fileInputStream.close();
23            } else {
24                output("找不到指定的文件");
25            }
26        } catch (Exception e) {
27            output("读取文件内容出错");
28            e.printStackTrace();
29        }
30        return lines;
31    }

记录上传失败时的方法在output方法中已经写好了,是记录日志的方法,这里就不写了,在统计失败数据的时候可以用请求响应大小来区分失败和成功,以及失败类型,这都是框架的基本功能,这里先不写了,毕竟内容比较多。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档