iOS文件上传遇到的坑

在iOS app的文件上传功能中遇到批量上传超时问题,主要原因是同时启动过多上传任务。测试显示,同一超时时间和网络速度下,多任务并发导致任务失败率增加。解决方案是限制同时进行的上传任务数量,确保网络资源有效利用,避免超时。对于大文件,应使用NSFileHandle分片读取以避免内存压力。
摘要由CSDN通过智能技术生成

背景

在我们的app中有一些需要做文件上传的功能,最近在我们对文件上传结果的日志监控中收到了很多的超时信息,后来在实际文件上传的测试中发现一些问题,主要集中在大批文件上传上面,简单分享一下。

问题

在批量文件上传中,通过测试发现,使用NSURLSessionUploadTask的形式进行文件上传,如果同时启动过多的上传任务,会导致上传任务的失败率极高,失败的原因基本都是请求超时。

按照以下方式对文件上传进行测试。

- (void)beginUpload {
    NSMutableArray *uploadTasks = [NSMutableArray array];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"jpg"];
    NSData *data = [NSData dataWithContentsOfFile:path];
    for (NSInteger i = 0; i < 1000; i++) {
        NSString *key = [NSString stringWithFormat:@"%zd.jpeg", i];
        NSString *url = [NSString stringWithFormat:@"http://upload.server.com?a=%zd", i];
        [uploadTasks addObject:[self uploadData:data key:key url:url]];
    }
}

- (NSURLSessionUploadTask *)upload
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值