将文件发送到 rails API 时如何在 AFNetworking 中设置参数
How to set a parameter in AFNetworking when sending file to a rails API
我为我的 iOS 应用程序创建了一个 API,因此该应用程序可以将 csv
文件发送到 API,并将该文件存储在服务器。我正在使用 refile gem 来处理 rails 应用程序中的附件。我正在使用 AFNetworking 从 iOS 应用程序中将文件发送到 rails 应用程序。
当我通过 curl 将文件发送到 API 时,它会填充数据库中相应的列/csv_file_id
字段。但是,当我从 iOS 内的应用程序发送文件时,csv_file_id
是 null
。我需要在 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
字段中,这有效,但我无法生成有效的 URL 来获取文件。
好吧,我明白了。我将 curl 请求的结果与我在 Xcode 中发送的结果进行了比较,发现值有所不同。更改了 Xcode 中的适当值,然后繁荣。这就是帮助我解决问题的原因。
最上面的请求是 curl,最下面的请求是我从应用程序中发送的请求。
我为我的 iOS 应用程序创建了一个 API,因此该应用程序可以将 csv
文件发送到 API,并将该文件存储在服务器。我正在使用 refile gem 来处理 rails 应用程序中的附件。我正在使用 AFNetworking 从 iOS 应用程序中将文件发送到 rails 应用程序。
当我通过 curl 将文件发送到 API 时,它会填充数据库中相应的列/csv_file_id
字段。但是,当我从 iOS 内的应用程序发送文件时,csv_file_id
是 null
。我需要在 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
字段中,这有效,但我无法生成有效的 URL 来获取文件。
好吧,我明白了。我将 curl 请求的结果与我在 Xcode 中发送的结果进行了比较,发现值有所不同。更改了 Xcode 中的适当值,然后繁荣。这就是帮助我解决问题的原因。
最上面的请求是 curl,最下面的请求是我从应用程序中发送的请求。