通过网址在php上传图片

时间:2011-05-07 22:11:09

标签: php file-upload

我有这张表格来上传图片:

<form method="post" action="upld.php" name="insertForm"  enctype="multipart/form-data">
Image name:<br />
<input type="text" name="iname" /><br />
<input type="file" name="file" />
<input type="submit" name="upload" value="Upload" />

</form>

这里是upld.php

<?php
$db_name = "DB_name";
$table_name = "tble";
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error());

if(isset($_POST['upload'])){

 if  (($_FILES["file"]["error"] > 0))
    {
echo "<h3> Error in File! </h3>";
    }
  else
    {
    if ((file_exists("images/" . $_FILES["file"]["name"])) )
      {
      echo "<h3> file not exsists!</h3>";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "images/" . $_FILES["file"]["name"]);

//$id=mysql_insert_id();
$time=strftime("%Y-%m-%d %H:%M:%S", time());
$img_name=$_POST['iname'];
$img=$_FILES["file"]["name"];
$sql="INSERT INTO $table_name VALUES('{$img}','{$time}','{$img_name}')";
$result=mysql_query($sql,$connection);
mysql_close($connection);
echo "<h3>uploaded successfully</h3>";
}
}
}
echo "<br><br><a href='GalleryAdmin.php'>GO back to Admin Gallery</a>
";
?> 
问题是:

当我运行它总是说我文件不是exsist,根据这个,如果

 if ((file_exists("images/" . $_FILES["file"]["name"])) )
      {
      echo "<h3> file not exsists!</h3>";

我在同一文件夹中有upld.php的images文件夹

你会猜到这是什么问题?

4 个答案:

答案 0 :(得分:2)

我认为你有轻微的逻辑错误

file_exists("images/" . $_FILES["file"]["name"])

如果文件存在于images文件夹中,则返回true(如果有人已上传,我的猜测就是我)。但是,根据您的日志声明,您想要的是

!file_exists("images/" . $_FILES["file"]["name"])

答案 1 :(得分:2)

好,所以你上传了你的文件。但是,你检查的是它是否在说“images / my.jpg”。此时它在你的tmp目录中的tmp_name中,很可能是这样,此时不会总是不存在,因为文件只是一个临时名称,你需要检查它在你的临时位置,移动它,然后检查它的图像是否肯定?

答案 2 :(得分:1)

<强>首先

PHP将文件上传到临时目录。这是您移动到images/文件夹所需的文件。您可以在服务器上的此位置找到该文件:

$_FILES['file']['tmp_name']

这是您要运行file_exists的文件,以确保上传成功完成。所以:

if (file_exists($_FILES['file']['tmp_name']) {
  // File upload successful. Now move file to your directory.
  move_uploaded_file($_FILES["file"]["tmp_name"],"images/" . $_FILES["file"]["name"]);
  // Now do the database stuff here.
  // ... 
} else {
  // Nothing was uploaded and something is wrong!
}

<强>次要的:

您的代码

file_exists("images/" . $_FILES["file"]["name"])

将返回TRUE,因此(在您的代码中)它会说没有文件。这是你的逻辑错误。

尝试:

!file_exists("images/" . $_FILES["file"]["name"])

代替。

<强>第三

确保您移动文件的文件(images /)具有正确的chmod。它需要775才能创建文件。这是通过ftp程序完成的。

在此处阅读更多内容:CHMOD tutorial

您还需要将文件从tmp目录移动到图像,然后再检查文件是否存在于file_exists中。

答案 3 :(得分:0)

请在检查文件是否存在之前使用move_uploaded_file;)

否则试试这个:

1。)error_reporting(E_ALL);

2.)chmod图像目录(775),右键单击目录