Can';t使用PHP脚本从iPhone发布到Web服务器
嗯,我对iphone和PHP开发都很陌生,我正试图在我的Web服务器上本地发布一个图像(我已经安装了Web服务器)。出于某种原因,我的PHP脚本正在执行,但文件没有保存 我确信这是这里最基本的问题,但我似乎找不到问题所在。非常感谢你们的帮助。谢谢 我的目标c代码:Can';t使用PHP脚本从iPhone发布到Web服务器,php,iphone,xcode,networking,nsurlconnection,Php,Iphone,Xcode,Networking,Nsurlconnection,嗯,我对iphone和PHP开发都很陌生,我正试图在我的Web服务器上本地发布一个图像(我已经安装了Web服务器)。出于某种原因,我的PHP脚本正在执行,但文件没有保存 我确信这是这里最基本的问题,但我似乎找不到问题所在。非常感谢你们的帮助。谢谢 我的目标c代码: UIImageView *imageView = [[UIImageView alloc] init]; imageView.image = [UIImage imageNamed:@"13.png"]; NSData *image
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"13.png"];
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 90);
NSString *urlString = @"http://localhost/uploader.php";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setTimeoutInterval:60.0];
[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=\"myfile.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]];
[request setHTTPBody:body];
NSLog(@"%@",[[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil] encoding:NSUTF8StringEncoding]);
我的PHP脚本:
<?php
$target = "./upload/";
$target = $target.basename( $_FILES['userfile']['name']) ;
$check = getimagesize($_FILES['userfile']['tmp_name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], './upload/')) {
echo "YES";
}
else
echo "NO";
?>
你的移动呼叫不正确。必须为目标指定文件名。您只提供了一个目录,因此调用失败。PHP不会为您创建文件名,您必须自己指定
if (move_uploaded_file($_FILES['userfile']['tmp_name'], './upload/name_of_file_to_write')) {
^^^^^^^^^^^^^^^^^^^^^
谢谢,马克,但我得到了同样的行为——“移动上传的文件”失败。我不确定我应该创建的文件名,但为了安全起见,我给它起了相同的名字,即:“./upload/myfile.jpg”,当然创建了一个。想法?确保您的Web服务器具有在该上载目录中创建/写入文件的权限。检查PHP错误日志,看看是否出现了任何问题。如果存在同名文件,请确保Web服务器可以覆盖该文件。对于这个愚蠢的问题,很抱歉-但是如何检查Web服务器是否具有正确的写入权限?非常感谢。
ls-ld从shell提示符上传
<代码>变量转储(stat('./上传'))来自php内部(请参阅)
if (move_uploaded_file($_FILES['userfile']['tmp_name'], './upload/name_of_file_to_write')) {
^^^^^^^^^^^^^^^^^^^^^