问答详情
源自:2-1 PHP文件上传案例实战之错误信息详解

为什么我就是匹配不到错误信息呢

<?php
header("Content-type:text/html;charset=utf-8");
//print_r($_FILES);

$name=$_FILES['up']['name'];
$type=$_FILES['up']['type'];
$size=$_FILES['up']['size'];
$tmp=$_FILES['up']['tmp_name'];
$error=$_FILES['up']['error'];
if($error==UPLOAD_ERR_OK){
    if(move_uploaded_file($tmp,'uploads/'.$name)){
    echo"文上传成功";
    }else{
        echo "文件上传失败";
        }
    }else{
        switch($error){
            case 1:
            echo"上传的文件超过了最大值";
            break;
            case 2:
            echo"上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
            break;
            case 3:
            echo"文件只有部分被上传。";
            break;
            case 4:
            echo"没有文件被上传。";
            break;
            case 6:
            echo"找不到临时文件夹。";
            break;
            case 7:
            echo"文件写入失败。";
            break;            
            }
    }
?>

为什么我就是匹配不到错误信息呢,上传失败不显示任何错误信息,只是提示“上传失败”,跟我的环境有关吗,MAC下的MAMP PRO。用老师的原版代码也是一样的结果,我根本获取不到$_FILES[MYFORM]中的['error']的值,直接print_r这个值都不显示,什么原因?

提问者:慕运维2907241 2015-09-17 00:04

个回答

  • zqbinary
    2016-03-29 11:29:20

    发一下upload.php

  • pardon110
    2015-09-17 08:36:03

    如果你确定只提示“上传失败",从你的代码逻辑看,可以确定你实质上传文件到服务器是成功。只不过使用move_uploaded_file($tmp,'uploads/'.$name),进行服务器临时文件复制移动时没有成功。因此,请确定两点:

    1. 上传文件所在的路径是否正确

    2. 你所上传的文件名是否非英文,若非英文请在进行move_uploaded_file()之前,将新文件名(即$name)进行操作系统所使用相应编码转换。