将文件发送到rails API时如何在AFNetworking中设置参数

时间:2015-10-24 20:07:40

标签: ios iphone afnetworking refile

我已经为我的iOS应用创建了一个API,因此该应用可以向API发送csv文件,并将该文件存储在服务器上。我使用refile gem来处理rails app中的附件。我正在使用AFNetworking将文件从iOS应用程序中发送到rails应用程序。

当我通过curl将文件发送到API时,它会填充数据库中相应的列/ csv_file_id字段。但是,当我从iOS中的应用发送文件时,csv_file_idnull。我需要一个令牌出现在csv_file_id字段中以便检索文件,即根据refile文档对文件执行GET请求。

所以我的问题是如何在iOS应用中填充csv_file_id字段?

iOS应用代码示例

// begin uploading CSV file using AFNetworking
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

    NSData *data = [NSData dataWithContentsOfFile:filename];

    // string to hold the "csv_file_id"
    NSString *csv_file_id = [NSString stringWithFormat:@""];

    // try adding params to the POST request, params are required for placing the filename in the "csv_file_filename" column of the rails DB.
    NSDictionary *params = @{@"csv_file_filename":justFilename,@"csv_file_id":csv_file_id};

    NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"csv_files" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
        [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"KegCop-users-%@.csv",idfv] fileName:[NSString stringWithFormat:@"KegCop-users-%@.csv",idfv] mimeType:@"text/csv"];
    }];

上面的代码示例会将""放在csv_file_id字段中,该字段有效,但我无法生成有效的网址来获取该文件。

1 个答案:

答案 0 :(得分:0)

好吧,我明白了。我将curl请求的结果与我在Xcode中发送的结果进行了比较,并注意到值的差异。在Xcode中更改了适当的值,并且繁荣了。这就是帮助我解决问题的原因。

最高要求是curl,最低要求是我在应用程序中发送的内容。

enter image description here