我有这张表格来上传图片:
<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文件夹
你会猜到这是什么问题?答案 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),右键单击目录