我正在开发一个用户维护的小型在线商店,我正在尝试让我的最终用户(商店管理员)上传产品图片。但是,当我运行此脚本时,它实际上并不存储图像。我从这里的各种技巧和教程中构建了这个脚本,并且除了图像上传部分之外,它已经完成了所有工作。
// 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);
?>
非常感谢任何帮助,提示,建议,见解等。
答案 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(不建议这样做,只是调试策略)