PHP脚本无法正常上传图像

时间:2012-08-10 14:33:46

标签: php mysql image upload

我正在开发一个用户维护的小型在线商店,我正在尝试让我的最终用户(商店管理员)上传产品图片。但是,当我运行此脚本时,它实际上并不存储图像。我从这里的各种技巧和教程中构建了这个脚本,并且除了图像上传部分之外,它已经完成了所有工作。

// Set the image target directory here
$target = "itemImages/";
$target = $target . basename($_FILES["image"]["name"]);

// Variables get POSTed here - just tack new ones on at the end.
// Various POSTs omitted for brevity

$pic=($_FILES["image"]["name"]);

// Places the picture in the folder
if(move_uploaded_file($_FILES["image"]['tmp_name'], "itemImages/")) 
{
echo "The file " . basename($_FILES['uploadedfile']["name"]) . " has been         uploaded.<br />";
}else {
    echo "There was an issue adding this item. Please try again.<br />";
}

// Writes variables to the database
mysql_query("INSERT INTO tbl_item   (itemNAME,itemDESC,itemCOST,itemHCOL,itemHSIZ,itemIMG)
VALUES ('$itemName','$itemDesc','$itemCost','$hasColor','$hasSize','$pic')");

mysql_close($con);
?>

非常感谢任何帮助,提示,建议,见解等。

3 个答案:

答案 0 :(得分:3)

move_uploaded_files需要文件名作为目标。它不会盲目地移动到目录,所以

move_uploaded_files($_FILES..., 'somedir/somefile.txt');

有效,但

move_uploaded_file($_FILES..., 'somedir/');

不会。

另外,请注意您的数据库操作容易受到SQL injection attacks的攻击。您通过$ pic盲目地插入上传文件的远程名称(['name']),该名称完全由远程用户控制。

答案 1 :(得分:0)

确保 itemImages 文件夹具有您的网络服务器(例如Apache)正在运行的用户的写入权限(例如www-data

答案 2 :(得分:0)

确保.php文件和您要写入的文件夹具有相同的“所有者”。或尝试将itemImages文件夹的权限设置为777(不建议这样做,只是调试策略)