2011-05-07 90 views
2

我有这样的形式上传图片:上传图像通过URL

<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> 
"; 
?> 

的问题是:

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

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

我有在同一个文件夹中的upld.php图像文件夹

你会猜测什么是问题?

+0

由于格式不正确,你的问题很难阅读。也许你可以编辑它,并添加表单html代码? – Mattis 2011-05-07 22:14:44

回答

2

我觉得你有轻微的逻辑错误

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

将返回true,如果该文件中的图片文件夹中存在(我猜想我会,如果有人已经上传的话)。但是,根据你的日志声明,你想要的是

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

如果我拿!file_exists(“images /”。$ _FILES [“file”] [“name”])只是其他步骤将执行无需上传 – user743473 2011-05-07 22:17:07

+2

@ user743473我不认为你了解如何在PHP上传工作.. 。如果你在'else'块中执行代码,它将正常工作(即,调用'move_uploaded_file'必须调用将临时文件夹中的上载移动到永久位置)。 – 2011-05-07 22:19:13

+0

可以解释更多我必须检查图像或临时目录代码将是什么?就像你说的那样 – user743473 2011-05-07 22:40:45

2

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

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"]) 

代替。

三:

确保文件到您移动文件(影像/)有适当的文件模式。它需要775才能创建文件。这是通过ftp程序完成的。

更多在这里阅读:CHMOD tutorial

你还需要检查它是否与file_exists的存在之前,将文件从TMP目录移动到图像。

0

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

否则试试这个:

1)使用error_reporting(E_ALL);

2.)chmod图像目录(775),鼠标右键点击目录