Проблема с загрузкой изображения (iphone sdk, multipartform-data) - PullRequest
0 голосов
/ 25 июня 2010

Мне нужно загрузить изображение на пользовательский сервер. У меня есть такой код:

NSString* boundary = @"blablablablabla";
NSString* boundaryString = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary];
NSString* boundaryStringFinal = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary];

NSMutableData* postData = [NSMutableData dataWithCapacity:[imageData length] + 1024];

NSString* s = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"s\"\r\n\r\n%@\r\n", @"addimage"];
NSString* ad = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"ad\"\r\n\r\n%@\r\n", adIdx];
NSString* u = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"u\"\r\n\r\n%@\r\n", uid];

[postData appendData:[boundaryString dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[s dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[ad dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[u dataUsingEncoding:NSUTF8StringEncoding]];

[postData appendData:[boundaryString dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\";\r\nfilename=\"image.jpg\"\r\nContent-Type: image/jpg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[postData appendData:[boundaryStringFinal dataUsingEncoding:NSUTF8StringEncoding]];

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:a.b.c/d.php"]];
[request setHTTPMethod:@"POST"];

NSString* dataLength = [NSString stringWithFormat:@"%d", [postData length]];
[request addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"];
[request addValue:@"a.b.c" forHTTPHeaderField:@"Host"];
[request addValue:dataLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];

[NSURLConnection connectionWithRequest:request delegate:self];

Это выглядит хорошо, но в ответ на этот запрос у меня есть такая строка: "Missing paramter u". Может кто-нибудь сказать мне, где проблема?

1 Ответ

0 голосов
/ 25 июня 2010

Сообщение missing parameter u почти наверняка приходит от PHP на сервере.Я предполагаю, что он должен быть в одной из "u"\r\n\r\n конструкций.Вам нужно знать, что сервер ожидает, чтобы разгадать это.

Я бы посоветовал вам сбросить запрос на публикацию в виде строки, вставить в браузер и посмотреть, сможете ли вы заставить его работать.Таким образом, вы можете убедиться, что понимаете правильную форму запроса, чтобы встроить его в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...