PHP照片上传到MySQL和单独的文件夹

时间:2012-08-10 01:45:16

标签: php mysql image-uploading

我确定我做的事情很傻,但我已经检查并重新检查过了。这是我的照片上传器,用于将照片文件本身保存到文件夹(名为“reccs”),然后将照片名称保存到我的数据库中的一行。数据库部分工作正常,但我的照片没有显示在文件夹中。 它没有显示错误,似乎正在工作(我收到“成功”消息)。的Ack!

代码如下。感谢您的任何见解。

$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.";
}

4 个答案:

答案 0 :(得分:0)

reccs是否应该在它前面有正斜杠?在你知道move_upload_file成功之后,似乎mysql更新查询在if语句中会更好。

答案 1 :(得分:0)

试;

if(move_uploaded_file($pic, $target))

答案 2 :(得分:0)

根据您的服务器设置,您可能必须将$ target设置为绝对路径而不是相对路径。至少它应该是你的家庭目录的绝对,所以如果reccs是你的根站点目录中的目录,那么将$ target设置为/reccs/file.name。

原因是文件通过defualt上传到/ tmp,它位于根(OS)级别,而不是托管级别,因此相对于/ tmp的路径通常没有意义。

答案 3 :(得分:0)

保存具有相同名称的照片是非常糟糕的做法。在上传照片之前,我建议你做以下操作。

  • 提取名称和扩展名。
  • 现在检查扩展名是否有效。如果有效则进一步
  • 首先修剪,然后用单个空格清除所有多个空格。
  • 现在使用小写文件名并使用_更改所有空格,并使用文件名附加时间戳。
  • 删除所有特殊字符(', " , \ etc
  • 现在添加带有该扩展名的文件名。

然后存入数据库