iOS学习-AFNetworking上传多张图片至后台

news/2024/7/20 20:01:28 标签: ios, 学习, cocoa, objective-c, post, 网络请求, AFNetworking

切记,name:多文件上传时,name不能重复,否则会覆盖

- (void)postImg:(NSString *)url
         params:(id)params
       imageArr:(NSMutableArray *)imageArr
       callback:(void(^)(id obj, NSError *error))callback {
    //选择需要的解析格式
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer= [AFJSONResponseSerializer serializer];
    [manager.requestSerializer setValue:kUser.token forHTTPHeaderField:@"Authorization"];
    url = [URL_BASIC stringByAppendingString:url];
    [manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        //遍历图片数组
        for (UIImage *image in imageArr) {
            // 图片太大会上传不到服务器上面去
            NSData *imageData = UIImageJPEGRepresentation(image, 1.0);;
            // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
            // 要解决此问题,
            // 可以在上传时使用当前的系统事件作为文件名
            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            // 设置时间格式
            formatter.dateFormat = @"yyyyMMddHHmmss";
            NSString *str = [formatter stringFromDate:[NSDate date]];
            NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
            /*
             此方法参数
             1. 要上传的[二进制数据]
             2. 对应后台处理文件的[字段"files"](根据后台定义的字段名来)
             3. 要保存在服务器上的[文件名]
             4. 上传文件的[mimeType]
             */
            [formData appendPartWithFileData:imageData name:@"files" fileName:fileName mimeType:@"image/jpg"];
        }
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        callback(responseObject, nil);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        callback(nil, error);
    }];
}


http://www.niftyadmin.cn/n/5416179.html

相关文章

【SQL - 软件 - MySQL】随笔 - 查看已有数据库

查看已有数据库 语法 语法格式 SHOW DATABASES [LIKE 数据库名]&#xff1b;语法说明 "[ ]"中的内容是可选项&#xff0c;用于匹配特定的数据库名称。可以部分匹配&#xff0c;也可以完全匹配&#xff1b; 使用示例 01 代码 SHOW DATABASES LIKE test;描述 查看…

Win11 没有网络bug

1.问题描述 没有网络&#xff0c;dns一直是固定的&#xff0c;但是dns已经是自动获取了(MAC地址随机) 2.解决办法 1.首先&#xff0c;删除所有网络的手动dns配置,控制中心那个dns管理没有用,在设置中删除网络,不然问题还会出现 - 2.然后&#xff0c;进入注册表\HKEY_LOCAL_MACH…

智能音箱技术解析

目录 前言智能音箱执行步骤解析1.1 探测唤醒词或触发词1.2 语音识别1.3 意图识别1.4 执行指令 2 典型的智能音箱2.1 百度小度音响2.2 小米小爱同学2.3 苹果 HomePod 3 功能应用举例3.1 设置计时器3.2 播放音乐 结语 前言 智能音箱已经成为日常生活中不可或缺的一部分&#xff…

已经连接过github远程库,如何再次推送及删除远程库的内容

基于上次将文件推送到已经建好的github远程库上&#xff0c;此篇文章主要介绍如何再次推送文件去直接已经连接过的远程库&#xff0c;以此如何删除远程库中不想要的文件。 一、推送文件到远程库 1.将所需推送的文件拉入本地库所建的文件夹下&#xff1a;{ex&#xff1a;JVM相…

什么是箭头函式 (Arrow Function)?跟一般的函式有什么差别?

箭头函式是在 ES6 后出现的一种函式表现方式,虽然也是函式的一种,但有部分的特性是跟一般函式有差异的,在面试中属于高频题,需要特别注意。 箭头函式和一般函式差异 箭头函式和一般函式的主要差异有四点,我们将在下方详细说明: 箭头函式语法不同、写法也较简洁箭头函式…

Uniapp 和Vue3 小程序 获取页面dom 方法

最近在写公司的小程序项目 技术框架 主要是Uniapp 和 Vue3 恰好有个需求是要 获取小程序页面dom 结构 用常见的vue3获取dom 结构不起效 记录一下 先给出正确答案 <template><view><view><view>Html</view><view id"target">…

Research Agent:具有解决基于大型文本语料库的复杂问题,具备深度多跳推理的能力

原文地址&#xff1a;https://towardsdatascience.com/the-research-agent-4ef8e6f1b741 2023 年 8 月 29 日 问题简介 在2021年&#xff0c;开始应对基于大量文本回答问题的挑战。在预训练transformers之前的时代&#xff0c;这个问题很难破解。 人工智能和大型预训练tran…

粘包与拆包

优质博文&#xff1a;IT-BLOG-CN 一、粘包出现的原因 服务端与客户端没有约定好要使用的数据结构。Socket Client实际是将数据包发送到一个缓存buffer中&#xff0c;通过buffer刷到数据链路层。因服务端接收数据包时&#xff0c;不能断定数据包1何时结束&#xff0c;就有可能出…