PHP - 将上传的图像保存到服务器

时间:2012-02-24 00:05:25

标签: php iphone asihttprequest

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

[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()时,我会看到图像数组的内容,但是出于某种原因,在尝试保存图像时,我会“失败!”打印到控制台。这有什么不对?

感谢。

2 个答案:

答案 0 :(得分: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 !';
   }    
}

你得到了什么?

答案 1 :(得分:0)

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

从长远来看,你最好手动创建上传文件夹并设置相应的权限,而不是让PHP脚本为你做这件事。