【问题标题】:Upload file with AFNetworking使用 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 只是在字段中替换编码数据,对吗?

【问题讨论】:

    标签: objective-c curl afnetworking


    【解决方案1】:

    我不得不修改 appendPartWithFileData:mimeType:name: 方法。

    在这一行

    [mutableHeaders setValue:[NSString stringWithFormat:@"file; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; 
    

    我写的是表单数据而不是 文件

    【讨论】:

    • 如果服务器不需要文件,您应该使用-appendPartWithFormData:name:。无需更改实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多