2012-02-24 180 views
1

我试图将使用PHP从iPhone上传的图像保存到服务器。我正在使用ASIHTTPRequest处理数据请求。这是我的iPhone代码:PHP - 将上传的图像保存到服务器

[request setPostValue:someString forKey:@"string1"]; 
[request setPostValue:anotherString forKey:@"string2"]; 
[request addData:[NSData dataWithData:UIImageJPEGRepresentation(anImage, 0.9)] 
     withFileName:@"img.jpg" andContentType:@"image/jpeg" forKey:@"img"]; 

[request startSynchronous]; 

在服务器端,我使用目前这个PHP代码,试图将图像保存到一个文件夹,我的服务器上:

print_r($_FILES); 

$folder = 'upload/'; 
$image_path = basename($_FILES['img']['name']); 
echo $folder . $image_path . "\n"; 
if (move_uploaded_file($_FILES['img']['tmp_name'], $folder . $image_path)) { 
    echo 'ok!'; 
} 
else { 
    echo 'fail !'; 
} 

琴弦上传就好了当我print_r()我看到图像数组的内容,因为我期望,但由于某种原因,当试图保存图像,我越来越“失败!”打印到控制台。这里有什么问题?

谢谢。

+3

在哪个服务器,你存储图像?你有权写入该文件夹吗? – 2012-02-24 00:08:12

+0

看到编辑下面 – 2012-02-24 00:38:04

+1

看起来像你正在使用相对上升的路径。尝试echo realpath($ folder);确保您将它上传到您认为正在上传的位置。 – ehudokai 2012-02-24 00:44:21

回答

4

尝试之前,你下面的步骤将您的图像

if(!is_dir($folder)) 
{ 
    echo "Folder does not exist" ; 

    if(!mkdir($folder)) 
    { 
     echo "Attempt to create folder failed" ; 
    } 
} 
else if(!is_writable($folder)) 
{ 
    echo "Folder nto writeable" ; 

    if(!chmod($folder, 0755)) 
    { 
     echo "Attempt to make writeable failed" ; 
    } 
} 
else { 

    if (move_uploaded_file($_FILES['img']['tmp_name'], $folder . $image_path)) { 
     echo 'ok!'; 
    } 
    else { 
    echo 'fail !'; 
    }  
} 

你明白了什么???

+0

感谢您的代码。我加了它,我就ok了!但是当我打开服务器上的文件夹时,它是空的。 – 2012-02-24 00:34:47

+0

这与ehudokai关于使用'realpath($文件夹)'的建议结合起来了。谢谢! – 2012-02-24 01:19:15

+0

随时欢迎您:) – Baba 2012-02-25 02:27:52

0

还请记住对正在上传的文件进行安全检查。例如,根据白名单(jpeg,png,gif等)检查文件类型 - 我确定您不希望某人能够将脚本上传到您的网站?

也为长期,你会过得更好手动创建上传文件夹,并设置相应的权限反对具有PHP脚本为你做..

+0

是的,这实际上是我最终做的。 – 2012-02-24 16:05:21