2012-03-28 189 views
1

我试图再次使此代码工作。我做了一些无法回应甚至是我试图访问的文件名。请帮帮忙,我一直在看这一个多小时已经与无济于事:( 注:我甚至不能回声出$名称这里文件上传PHP语法错误

<?php 
    error_reporting(0); 
    if($_POST['submit']){ 
     //file uploading 
     $name = basename($_FILES['upload']['name']); //name plus extention 
     print_r($_FILES['upload']); 
     $t_name = $_FILES['upload']['tmp_name']; 
     $dir = 'gallery_i'; 
     $thumbs = 'gallery_t'; 

     if(move_uploaded_file($t_name,$dir.'/'.$name)){ 
      $resizeObj = new resize($dir.'/'.$name);//Resize image (options: exact, portrait, landscape, auto, crop) 
      $resizeObj -> resizeImage(200, 200, 'auto'); //Save image 
      $resizeObj -> saveImage($thumbs.'/'.$name, 100); 
      echo 'file upload nicely'; 
      //file upload successfull   
     }   
} 
?> 


<div class='home'> 
    <form method='post' action='other.php'> 
     Name: <input class='reg' type='text' name='prodname'/><br/><br/> 
     Description:<br/> <textarea class='reg' name='description' rows="4" cols="40">    </textarea> <br/><br/> 
     <input type='file' name='upload' /> 
     <input type='submit' value='submit' name='submit'/> 
    </form> 
</div> 
+0

什么是输出? – Alp 2012-03-28 19:14:14

+0

这个页面叫做'other.php'吗? – mellamokb 2012-03-28 19:14:30

+0

您是否检查过要将文件移动到的目录的文件权限? – 2012-03-28 19:15:31

回答

7

您需要使用mutlipart表单数据上传文件:

设置窗体属性:enctype="multipart/form-data"

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

简单的教程在这里:http://www.w3schools.com/php/php_file_upload.asp

+1

也许是这样,但它仍然可以为初学者有用,我也贴一个链接到更详细的规范在万维网联盟如果她喜欢阅读更深入;) – 2012-03-28 19:24:35

+1

@ benedict_w:同意。 w3schools就像WikiPedia的编程资源。它可以完成起步和去往的工作,但是当你深入细节或遇到技术问题时,最终你需要更好的资源。坦率地说,我认为对学校所有事情的这种教条式拒绝是一种愚蠢的做法,它确实具有IMO的有用目的。 – mellamokb 2012-03-28 19:32:04

+0

@mellamokb:+1。我不链接到w3schools,我链接到他们写的东西。不要告诉我w3schools塞满了,告诉我什么是我特别关联的问题。这就像恨整个国家,因为它的一些成员是可恨的。这正是种族主义如何运作...... – Stefan 2012-03-28 19:52:08

1

echo仅执行如果move_uploaded_file($t_name,$dir.'/'.$name)返回true。在你的情况下,它返回false。

您需要确定是否

  • 该文件存在(file_exists($t_name)
  • 可读(is_readable($t_name)
  • 目标目录是可写的(is_writable($dir)
  • 具有相同名称的文件已经存在(!is_file($dir . '/' . $name)

只有w如果这些条件成立,则move_uploaded_file将成功完成。

正如benedict_w所指出的那样,您还需要修改HTML表单以添加值为multipart/form-data的属性enctype

0

开启PHP的错误报告/显示选项。在开发/调试时与其他人一起跑步就像在午夜时在悬崖边跑马拉松,同时戴上眼罩。

在php.ini:

display_errors: 1 
error_reporting: E_ALL 

同时,你的脚本将不会起作用。对于文件上传甚至有成功的机会,您需要指定

<form method="post" action="other.php" enctype="multipart/form-data"> 
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^--- missing 

并且假设上载成功。在最低限度你应该有:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if ($_FILES['upload']['error'] === UPLOAD_ERR_OK) { 
     .... your file handling code 
    } else { 
     die("Upload failed with error code " . $_FILES['upload']['error']); 
    } 
}