上传图片-AFN

上传图片分为两种 :一种是只上传图片,一种是即上传图片又上传文字。

一.只上传图片,代码如下

- (void)httpRequestUploadMeHeadImageWithFile:(UIImage *)file UUID:(NSString *)UUID error:(void (^)(NSError *))err{
    NSString *url = [NSString stringWithFormat:@"%@图片上传地址"];
    NSDictionary *parametes;
    if ( UUID.length) {//图片参数,登录后的UUID,根据你参数添加所需要的参数
        parametes = @{@"UUID":UUID};
    }else{
        return ;
    }
    if (!file) {
        return;
    }
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];  //请求图片,请求网页时需要加入这句,因为AFN默认的请求的是json
//    application/json
      [manager.requestSerializer setValue:/**@"multipart/form-data"*/@"application/json" forHTTPHeaderField:@"Content-Type"]; //请求头
    [manager POST:url parameters:parametes constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        NSData *data = UIImagePNGRepresentation(file); //下面的方式也可以
        //                NSData *data = UIImageJPEGRepresentation(pic, 1.0);

        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        // 设置时间格式
        formatter.dateFormat = @"yyyyMMddHHmmss";
        NSString *str = [formatter stringFromDate:[NSDate date]];
        NSString *fileName = [NSString stringWithFormat:@"%@.png", str];
        // 特别注意,这里的图片的名字不要写错,必须是你接口的图片的参数名字如我这里是file
        [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];
    } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"responseObject===>%@",responseObject);
        if (err) {
            err(nil);
        }

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"task------>%@error------> %@",task,error);
        if (err) {
            err(error);
        }
    }];
}

二. 即上传图片又上传文字,只需将Content-Type改为@"multipart/form-data"和 parametes参数字典中加入你要拼接文字的参数名称即可。

   [manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];

三. 可能出现的错误

  1.如果返回错误码为-1001,需将Content-Type设置为@"application/json"可图片参数的名字,[formData appendPartWithFileData:data name:@”图片参数的名字“ fileName:fileName mimeType:@"image/png"]和NSData *data = UIImagePNGRepresentation(图片名字的地址)一致且是你接口参数的名字;

时间: 2024-08-28 23:20:16

上传图片-AFN的相关文章

上传图片流到服务器(AFN方法) (多张图片)(图片流)

上传图片流到服务器(AFN方法) (多张图片)(图片流) 第一步//获取图片 UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"添加照片" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@&q

iOS开发之使用AFN上传图片

//1.创建管理者对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; //2.上传文件 NSDictionary *dict = [NSDiction

AFN 上传图片

#pragma mark - Reachability Management (iOS 6-7) //网络监听(用于检测网络是否可以链接.此方法最好放于AppDelegate中,可以使程序打开便开始检测网络) - (void)reachabilityManager { //打开网络监听 [manager.reachabilityManager startMonitoring]; //监听网络变化 [manager.reachabilityManager setReachabilityStatus

iOS用AFN上传图片到java后台

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager POST:@"http://localhost:8080/FileUpdateDemo/FileDemo" parameters:nil constructingBodyWith

利用AFN上传多张图片到服务器

最近服务器做了一个可以支持多张图片上传的接口,所以我对应的也找了AFN多图片上传的方法 这里我主要是针对UImage数组的传入,我觉得大部分我都是能获得UImage来上传的,然而在网上找到的方法都是要获得图片的地址,所以就自己整了这个 #pragma mark - 上传图片 - (void)uploadImages:(NSArray <UIImage *>*)images { WEAKSELF; AFHTTPSessionManager *mar = [AFHTTPSessionManager

iOS Post上传图片, 文件流的形式

最近看到群里很多小伙伴有问上传图片服务器收不到, 解析不了.  可以说就一个属性  ContentType , 不论你使用第三方的AFN, 还是自己封装NSURLSesstion. 都需要把ContentType 设置和后台的解析方式一样(可能术语不是很标准, 总之就这个意思哈,谅解) 下面贴一段AFN的上传图片代码吧, 亲测有效, 不过可能只是针对我的服务器.  只要和后台同学沟通好就行了 //此body是向后台传的参数, 因为是上传图片, 所以只给个图片名就够了, 这个和后台去问 NSDic

iOS利用AFNetworking(AFN) 实现图片上传

1.上传图片以二进制流的形式上传 1 #pragma mark - 文件上传  2 - (IBAction)uploadImage  3 {  4     /*  5      此段代码如果需要修改,可以调整的位置  6        7      1. 把upload.php改成网站开发人员告知的地址  8      2. 把file改成网站开发人员告知的字段名  9      */ 10     // 1. httpClient->url 11      12     // 2. 上传请求P

iOS 批量上传图片的 3 种方法

AFNetworking 在去年年底升级到了 3.0.这个版本更新想必有很多好处,然而让我吃惊的是,它并没有 batch request 接口.之前的 1.x 版本.2.x 版本都实现了这个很常见的需求,不知道作者为何选择在 3.x 中去掉它. 在 AFNetworking 2 中,我们只需一行代码就能解决批量上传的问题: [AFURLConnectionOperation batchOfRequestOperations:operations progressBlock:^(NSUIntege

本地上传图片预览

<!DOCTYPE html > <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>图片上传本地预览,获得图片的base64(可压缩)</title> <style type="text/css"> .upload_image {