图片上传表格给我 “没有这样的文件或目录” 错误

问题描述:

PHP:图片上传表格给我 “没有这样的文件或目录” 错误

if((isset($_POST['title']))&&(isset($_POST['body']))){ 

$maxSize = 4000; 
$acceptType = array( 
    'png' => 'image/png', 
    'jpe' => 'image/jpeg', 
    'jpeg' => 'image/jpeg', 
    'jpg' => 'image/jpeg', 
    'gif' => 'image/gif', 
); 

$title = mysql_real_escape_string($_POST['title']); 
$body = mysql_real_escape_string($_POST['body']); 


if((isset($_FILES['image']))&&(is_uploaded_file($_FILES["image"]["tmp_name"]))){ 

    $image_dest = "/it/images/".rand(1,1000)."-".basename($_FILES['image']['name']); 

    if($_FILES['image']['size'] <= $maxSize*1024) { 

     if(in_array($_FILES['image']['type'], $acceptType)) { 

      if(move_uploaded_file($_FILES['image']['tmp_name'], $image_dest)) // line 44 
       $message="Ok"; 
     } 
    } 



} 
} 

HTML:

<form action="createblog.php" method="post" enctype="multipart/form-data"> 
    <p> 
     <label>Title:</label> 
     <input type="text" size="100" name="title"> 
    </p> 
    <p> 
     <label>Image:</label> 
     <input type="file" name="image"> 
    </p> 
    <p> 
     <label>Image Caption:</label> 
     <input type="text" size="100" name="imagecaption"> 
    </p> 
    <p> 
     <label for="editor1">Body:</label> 
     <textarea class="ckeditor" cols="50" id="editor1" name="body" rows="10"></textarea> 
    </p> 
    <p> 
     <input type="submit" value="Submit" /> 
    </p> 
</form> 

为什么我得到这个错误?

Warning: move_uploaded_file(/it/images/865-Star_Trek_Logo.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/content/08/1936/html/it/createblog.php on line 44 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php0hvJSh' to '/it/images/865-Star_Trek_Logo.jpg' in /home/content/08/1936/html/it/createblog.php on line 44 
+1

什么是不明确的错误信息? '没有这样的文件或目录' – 2012-07-13 22:38:06

+0

但是什么目录? – xRobot 2012-07-13 22:39:00

+1

在服务器的根目录中是否有一个名称为“it”的文件夹? – 32bitfloat 2012-07-13 22:42:22

你必须指定完整路径:

$image_dest = "/home/content/08/1936/html/it/images/".rand(1,1000)."-".basename($_FILES['image']['name']); 
+0

$ image_dest是文件名_with_的位置,因此它不是,也不需要是目录。 – Austin 2012-07-13 22:46:46

+0

/images /是目录,'rand(1,1000)。“ - ”。basename($ _ FILES ['image'] ['name']'是生成的文件名,而不是目录 – Austin 2012-07-13 22:48:04

+0

Sry是我的错。修正,谢谢 – Besnik 2012-07-13 22:49:31

您$ image_dest的开头应为:

/home/content/08/1936/html/it/images/ 

您正在尝试使用相对路径,而绝对路径是必需的,所以:

$image_dest = "/home/content/08/1936/html/it/images/".rand(1,1000)."-".basename($_FILES['image']['name']); 

另请注意,您必须将您的images目录修改为777以允许将文件上载到该目录。