1

iOS アプリ用の API を作成したので、アプリはcsvファイルを API に送信し、ファイルをサーバーに保存できます。Rails アプリ内で添付ファイルを処理するために refile gem を使用しています。AFNetworking を使用して、iOS アプリ内からレール アプリにファイルを送信しています。

ファイルをcurl経由でAPIに送信するとcsv_file_id、DBの適切な列/フィールドが埋められます。ただし、iOS 内のアプリからファイルを送信するとcsv_file_idnull. ファイルを取得するには、トークンがcsv_file_idフィールドに存在する必要があります。つまり、refile ドキュメントに従って、ファイルに対して GET 要求を実行します。

私の質問はcsv_file_id、iOS アプリ内からフィールドに入力するにはどうすればよいですか?

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 を生成できません。

4

1 に答える 1

0

さて、私はそれを理解しました。curl リクエストの結果を Xcode で送信した結果と比較すると、値の違いに気付きました。Xcode で適切な値を変更し、ブームになりました。これが私の問題を解決するのに役立ちました。

一番上のリクエストは curl で、一番下のリクエストはアプリ内から送信したものです。

ここに画像の説明を入力

于 2015-10-25T18:50:44.593 に答える