PHP照片上传到MySQL和单独的文件夹
问题描述:
我敢肯定我做的事情很傻,但我已经检查并重新检查了这一点。这是我的照片上传器,意味着将照片文件本身保存到一个文件夹(名为“reccs”),然后将照片的名称保存到我的数据库中的一行。数据库部分完美工作,但我的照片没有显示在文件夹中。 它显示没有错误,似乎工作(我收到“成功”的消息)。确认!PHP照片上传到MySQL和单独的文件夹
代码如下。感谢任何见解。
$link = mysql_pconnect($host, $username, $password);
$db = mysql_select_db ($dbname);
$target = "reccs/";
$target = $target . basename($_FILES['photo']['name']);
$pic=($_FILES['photo']['name']);
mysql_query("UPDATE login SET recc = '$pic' WHERE username = '".$_SESSION['user']['username']."'");
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
echo "The file has been uploaded, and your information has been added to the directory";
}
else {
echo "Sorry, there was a problem uploading your file.";
}
答
reccs在它前面有斜杠吗?在知道move_upload_file成功之后,似乎mysql更新查询在if语句内部会更好。
答
试试;
if(move_uploaded_file($pic, $target))
答
根据您的服务器设置,你可能必须设置$目标是一个绝对路径,而不是相对的。至少它对于你的主目录应该是绝对的,所以如果reccs是根目录目录中的目录,那么将$ target设置为/reccs/file.name。
原因是文件被上传到/ tmp,这是在根(OS)级而不是托管级,所以相对于/ tmp的路径通常是没有意义的。
答
保存同名照片是非常糟糕的做法。在上传照片之前,我会建议你做下面的事情。
- 提取名称和扩展名。
- 现在检查该分机是否有效。如果有效,则进一步进行
- 第一次修剪,然后用单个空格清除所有多个空格。
- 现在小写的文件名,并改变所有的空间与
_
和追加时间戳与文件名。 - 删除所有特殊字符(
', " , \ etc
) - 现在添加具有该扩展名的文件名。
然后存储到数据库
注意,SQL是容易受到SQL注入。一定要在$ _FILES ['photo'] ['name']'上调用'mysql_real_escape_string()'。从长远来看,考虑转向更新的MySQL API(如PDO或MySQLi),以支持准备好的语句。 – 2012-08-10 02:17:11
你对目标文件夹有写入权限吗? – 2012-08-10 05:22:42