AFNetworking 文件上传

Posted

技术标签:

【中文标题】AFNetworking 文件上传【英文标题】:AFNetworking file upload 【发布时间】:2015-06-16 07:03:06 【问题描述】:

我正在尝试使用 AFNetworking 上传文件,它可以在 ios 模拟器上运行,但不能在真实设备上运行,我尝试了 2 种不同的方式但相同。

请有人帮我解决这个问题 非常感谢。

这是第一个代码

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString *dir = [paths objectAtIndex:0];
NSString *mp3File = [dir stringByAppendingPathComponent:@"Mp3File.mp3"];


NSData* myData = [mp3File dataUsingEncoding:NSUTF8StringEncoding];

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @@"nid": nid, @"uid": [NSString stringWithFormat:@"%@", [appSet objectForKey:@"userid"]];
AFHTTPRequestOperation *op = [manager POST:@"http://192.168.1.103/sample_Files/mp3.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 

    [formData appendPartWithFileData:myData name:@"userfile" fileName:[NSString stringWithFormat:@"%@.mp3", dateString] mimeType:@"audio/mpeg"];

 success:^(AFHTTPRequestOperation *operation, id responseObject) 

     NSLog(@"YESSS UPLOADED");

 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"%@", error);
];

[op start];

这是另一个

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @@"nid": nid, @"uid": [NSString stringWithFormat:@"%@", [appSet objectForKey:@"userid"]];
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"Mp3File.mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];

    AFHTTPRequestOperation *op =  [manager POST:@"http://192.168.1.103/sample_Files/mp3.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
        NSError *error;
        BOOL success = [formData appendPartWithFileURL:fileURL name:@"userfile" fileName:[NSString stringWithFormat:@"%@.mp3", dateString] mimeType:@"audio/mpeg" error:&error];
        if (!success)
            NSLog(@"appendPartWithFileURL error: %@", error);

     success:^(AFHTTPRequestOperation *operation, id responseObject) 
        NSLog(@"Success: %@", responseObject);

     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"Error: %@", error);

    ];
    [op start];

【问题讨论】:

您遇到了什么问题?你得到错误? 没有任何错误,真实设备只是创建空的mp3文件到ftp,而不是上传文件。但模拟器上传完整文件 是上传图片不是mp3文件,我要上传mp3 您是否尝试过 github.com/AFNetworking/AFNetworking,部分 - 创建上传任务? 【参考方案1】:

从我所见,它看起来是正确的。

您是否在 FAILURE 上设置了断点以查看 NSERROR 响应是什么?

这是一个发布非常相似解决方案的示例 URL。

Uploading image with AFNetworking 2.0

【讨论】:

这是评论,不是答案。 我试过了,还是一样,只是创建一个空的mp3文件到ftp。不上传。我想从 NSDocumentDirectory 上传 mp3 文件 是上传图片不是mp3文件,我要上传mp3

以上是关于AFNetworking 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 上传多个文件

AFNetworking 文件上传

AFNetworking:多个文件上传问题

使用 AFNetworking 上传文件

AFNetworking 多文件上传

使用 AFNetworking 上传多个图像或文件,