Проблема с разрешением, когда PHP POST'ing multipart / form-data из Obj-C на новый сервер - PullRequest
1 голос
/ 14 июля 2011

Поэтому я чувствую, что, возможно, есть очень простой ответ на этот вопрос, который я упускаю из виду, но не могу понять.

Я разрабатываю приложение для iPhone для кого-то.До вчерашнего дня я тестировал все это на своем сервере, и все работало нормально.Вчера я начал переносить все файлы заново, и когда я выполнял сценарии загрузки изображений, они больше не работают.

Код, который я использую на стороне iPhone, выглядит следующим образом:

NSData *imageData = UIImageJPEGRepresentation(image, 90);

NSString *urlString = [NSString stringWithFormat:@"%@File.php", MENUURL];
NSLog(@"URL STRING: %@", urlString);

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"title\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%d", id] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:body];    

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

NSLog(@"RS: %@", returnString);

Затем, когда я получаюдля регистрации returnString Im, представленный с этим

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /Directory/Directory/File.php
on this server.</p>
</body></html>

Между тем файл имеет правильные разрешения, так же, как это было на моем сервере.Если я обращаюсь к файлу через веб-браузер или отправляю ему запрос POST типа

[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

, он позволяет мне получить доступ к файлу (хотя он возвращает ошибку, поскольку необходимые данные не были предоставлены)

Кто-нибудь знает, почему это может происходить?Я искал все утро и не мог найти что-нибудь действительно полезное

Большое спасибо, ребята

...