Как правильно установить заголовок и тело HTTP - PullRequest
0 голосов
/ 29 февраля 2012

Я хочу загрузить объект данных изображения на сервер (.html) с именем файла (123456700.png).

В этом коде нет ошибок, но загрузка не работает.

УстановитьЗаголовок

// Initial Setting
NSString *urlString = @"http://121.78.147.19/uploadfile.html";
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];  

// Set Heeader
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

// type: text/html;charset=UTF-8;
NSString *contentType = [NSString stringWithFormat:@"text/html;charset=UTF-8; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

Установить тело (imgData не имеет проблем, я проверил imgData.length)

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

// Disposition: form-data, name="image" filename="123456700.png" ???
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"123456700.png\"\r\n"] 
                  dataUsingEncoding:NSUTF8StringEncoding]];

// Type: application/octet-stream ??? 
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imgData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];

Выполнить (нет ошибок, resData - это текстовые данные html.

NSURLResponse *response = nil;
NSError *error = nil;
NSData *resData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

=====================================================================================

/ uploadfile.html Снимок экрана (Chrome / Ниже Информация и текстявляется исходным кодом HTML.)

Страница не имеет проблем. Загрузка работает нормально через веб-страницу.

Кнопка с текстом «파일 선택» - это кнопка «Выбрать файл».

------------------------------- Снимок экрана веб-страницы ---------------------------------------- i

/uploadfile.html

1 Ответ

0 голосов
/ 29 февраля 2012
  1. данные тела http расположены в неправильном порядке,
  2. неправильный тип содержимого

подробности см. Здесь: Загрузка файлов на основе форм в HTML

...