PHP POST从多个部分/表单数据从Obj-C到新服务器的权限问题

时间:2011-07-14 17:02:06

标签: php iphone objective-c permissions multipartform-data

所以我觉得这可能是一个非常简单的答案,我忽略了一些东西,但我无法理解。

我正在为某人开发iPhone应用程序。直到昨天,我在我的服务器上测试了一切,并且everthing运行良好。昨天我开始迁移所有文件,当我的图像上传脚本不再有效时。

我在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时
<!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>

同时该文件具有正确的权限,与我在服务器上的权限相同。如果我通过Web浏览器转到该文件或向其发送类型为

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

它允许我访问该文件(尽管由于未提供必要的数据而返回错误)

有谁知道为什么会这样?我一整天都在搜索,无法找到真正有用的东西

非常感谢你们

0 个答案:

没有答案