文件上传php语法错误

时间:2012-03-28 19:12:15

标签: php

我正在尝试让这段代码再次运行。即使我正在尝试访问的文件名,我做了一些不回显的内容。请帮助,我已经看了一个多小时已经没有用了:( 注意:我甚至无法在此处回显$ name

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

3 个答案:

答案 0 :(得分:7)

您需要使用多部分表单数据来上传文件:

设置表单属性: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 :(得分: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)

只有当这些条件成立时,move_uploaded_file才能成功完成。

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

答案 2 :(得分: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']);
    }
}