Php图片上传

时间:2017-01-20 02:13:45

标签: php

我对PHP很新,目前正在处理图片上传功能,我有表格,你可以上传图片,图片没有必要上传现在问题是下面的代码赢了不让我们提交表格图片 这是我的代码

$photoCount = count($_FILES['photo']['name'] ); 
if($photoCount > 0)  {
    for($i = 0;$i<$photoCount;$i++) {
        $name = $_FILES['photo']['name'][$i];
        $nameArray = explode('.', $name);
        $fileName = $nameArray[0];
        $fileExt = $nameArray[1];
        $mime = explode('/', $_FILES['photo']['type'][$i]);
        $mimeType = $mime[0];
        $mimeExt = $mime[1];
        $tmpLoc[] = $_FILES['photo']['tmp_name'][$i];
        $fileSize = $_FILES['photo']['size'][$i];
        $uploadName = $name;
        $uploadPath[] = BASEURL.'/admin/productimages/'.$uploadName;
        if ($i != 0) {
            $dbpath .= ',';
        }
        $dbpath .= '/project/admin/productimages/'.$uploadName;

        if($mimeType != 'image') {
            $errors[] .= 'The file must be an image.';
        }

        if(!in_array($fileExt, $allowed)) {
            $errors[] .= 'The file extension must be a png, jpg, jpeg, or gif.';
        }

        if($fileSize > 15000000) {
            $errors[] .= 'The file size must be under 15 megabytes.';
        }
        if ($fileExt != $mimeExt && ($mimeExt == 'jpeg' && $fileExt != 'jpg')) {
            $errors[] = 'File extension does not match the file';
        }
    }
}

这是$ _FILES

的var转储
array(1) { ["photo"]=> array(5) { ["name"]=> array(1) { [0]=> string(0) "" } ["type"]=> array(1) { [0]=> string(0) "" } ["tmp_name"]=> array(1) { [0]=> string(0) "" } ["error"]=> array(1) { [0]=> int(4) } ["size"]=> array(1) { [0]=> int(0) } } } 

erros我得到了

Notice: Undefined offset: 1 in C:\xampp\htdocs\project\admin\products.php on line 99

Notice: Undefined offset: 1 in C:\xampp\htdocs\project\admin\products.php on line 102

这是第99和102行

$fileExt = $nameArray[1];

$mimeExt = $mime[1];

2 个答案:

答案 0 :(得分:0)

在处理名称之前,请检查错误。

if ($_FILES['photo']['error'][$i] > 0) {
    echo 'Didn\'t work';
} else {
    // Process the file
}

在这种情况下,错误设置为“4”(UPLOAD_ERR_NO_FILE)。存在一系列错误,如果您有错误,则该文件将不存在,您无法处理它。所以先检查一下。

答案 1 :(得分:-1)

哦!

问题是您的数组索引错误;

在您的代码中,$name是一个空字符串(对于var_dump的结果),因此explode('.', $name)将返回类似于此数组[""]的数组。数组长度为1,当使用$nameArray[1]超出长度时,将得到错误。

第二个错误与第一个错误相同。

我认为你应该先检查$name是否为空。