使用 AFNetworking 上传文件
Posted
技术标签:
【中文标题】使用 AFNetworking 上传文件【英文标题】:Upload file with AFNetworking 【发布时间】:2011-10-12 06:26:37 【问题描述】:我的后端编码器为我提供了文件上传的 curl 示例:
curl -v -F dictation_file=@file.name -F category=1 http://my.server.com/files/create/
我正在使用 AFNetworking,但以下代码不起作用:
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:title forKey:@"title"];
[parameters setObject:category forKey:@"category"];
NSMutableURLRequest *request = [self multipartFormRequestWithMethod:@"POST"
path:@"files/create/"
parameters:parameters
constructingBodyWithBlock:^(id <AFMultipartFormData> formData)
NSData *data= [NSData dataWithContentsOfFile:record.filePath];
[formData appendPartWithFileData:data mimeType:@"application/octet-stream" name:@"dictation_file"];
];
AFHTTPRequestOperation *operation = [AFHTTPRequestOperation operationWithRequest:request
completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error)
// handlecodehere
];
但是,在响应 json 时,我收到了 dictation_file 字段为空的信息。可能是我不明白卷曲? @file.name 只是在字段中替换编码数据,对吗?
【问题讨论】:
【参考方案1】:我不得不修改 appendPartWithFileData:mimeType:name: 方法。
在这一行
[mutableHeaders setValue:[NSString stringWithFormat:@"file; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"];
我写的是表单数据而不是 文件。
【讨论】:
如果服务器不需要文件,您应该使用-appendPartWithFormData:name:
。无需更改实现。以上是关于使用 AFNetworking 上传文件的主要内容,如果未能解决你的问题,请参考以下文章