Сохранение типа контента при публикации файла с iPhone на Rails - PullRequest
0 голосов
/ 02 октября 2009

Я отправляю ZIP-файл с iPhone на сервер Rails, используя NSURLRequest. Проблема в том, что тип содержимого zip-файла теряется при передаче. Когда я загружаю тот же zip-файл из веб-браузера в Rails, тип содержимого сохраняется. Это наводит меня на мысль, что это связано с тем, как я отправляю его с iPhone. Кто-нибудь знает, почему это может произойти? Я разместил код iPhone ниже.

NSString * filePath = [self filePathForExportedData]; NSMutableURLRequest * theRequest = [NSMutableURLRequest requestWithURL: [NSURL URLWithString: kExportURLString] cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 20.0];

[theRequest setHTTPMethod:@"POST"];

[theRequest setValue: [NSString stringWithFormat:@"multipart/form-data; boundary=%@", BOUNDARY]

forHTTPHeaderField: @ "Content-Type"]; NSMutableData * fileData = [NSMutableData dataWithContentsOfFile: filePath]; NSMutableData * postData = [NSMutableData dataWithCapacity: [длина fileData] + 512]; [postData appendData: [[NSString stringWithFormat: @ "-% @ \ r \ n", BOUNDARY] dataUsingEncoding: NSUTF8StringEncoding]]; [postData appendData: [[NSString stringWithFormat: @ "Content-Disposition: form-data; name = \"% @ \ "; filename = \"% @ \ "\ r \ n \ r \ n", @ "archive_file" , @ "export.zip"] dataUsingEncoding: NSUTF8StringEncoding]]; [postData appendData: [[NSString stringWithFormat: @ "Content-Type: application / zip \ r \ n \ r \ n"] dataUsingEncoding: NSUTF8StringEncoding]]; [postData appendData: fileData]; [postData appendData: [[NSString stringWithFormat: @ "\ r \ n -% @ - \ r \ n", ГРАНИЦА] dataUsingEncoding: NSUTF8StringEncoding]]; [theRequest setHTTPBody: postData]; [self makeRequest: theRequest]; # Это отправит запрос

1 Ответ

0 голосов
/ 03 октября 2009

Мне удалось решить проблему, удалив вторую строку в заголовке «Content-Disposition», например так:

[postData appendData: [[NSString stringWithFormat: @"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n\r\n", @"archive_file", @"export.zip"]
                                       dataUsingEncoding:NSUTF8StringEncoding]];

Я предполагаю, что двойной перевод новой строки означает конец заголовкови заголовок «Content-Type» игнорируется.

...