我正在尝试使用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()
时,我会看到图像数组的内容,但是出于某种原因,在尝试保存图像时,我会“失败!”打印到控制台。这有什么不对?
感谢。
答案 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脚本为你做这件事。