在PHP中上传图像时出错

时间:2014-10-22 17:07:01

标签: php file-upload image-uploading

在下面的代码中,我尝试上传图片但显示以下错误。

  

警告:move_uploaded_file():无法在D:\ Work \ xampp中将'D:\ Work \ xampp \ tmp \ php8A66.tmp'移动到'images \ uploads \ slider \'1413996794 _ :: 1.jpeg''第35行的\ htdocs \ project \ aad \ slider.php

我认为问题出在名为move_uploaded_file()的函数中; php功能。

目录应保存该项目文件夹中的图像。

我正试图解决这个问题我应该采取什么步骤?

if(isset($_POST['upload'])){
    $imageName = $_POST['imageName'];
    $imageFile = $_FILES['imageFile']['tmp_name'];
    $imageSize = $_FILES['imageFile']['size'];
    $imageType = $_FILES['imageFile']['type'];

    $ipAddress = $_SERVER['REMOTE_ADDR'];
    $time = time();

    if($imageType == 'image/gif'){
        $ext = '.gif';
    }elseif($imageType == 'image/png'){
        $ext = '.png';
    }elseif($imageType == 'image/jpg'){
        $ext = '.jpg';
    }elseif($imageType == 'image/jpeg'){
        $ext = '.jpeg';
    }

    $imageFileName = $time.'_'.$ipAddress.$ext;

    //$dir = "images\uploads\slider\$imageFileName";
    $dir = "images\uploads\slider\".$imageFileName;

    if($imageName !== ''){
        if($imageSize < '200000000'){
            if($imageType == 'image/gif' || $imageType == 'image/png' || $imageType == 'image/jpeg' || $imageType == 'image/jpg'){
                if(move_uploaded_file($imageFile, $dir)){
                    $query = "INSERT INTO slider VALUES('', '$imageName', '$imageFileName', '$imageSize', '$dir')";
                    $mysql_query = mysql_query($query);
                    if($mysql_query){
                        $msg = 'Image Uploaded Successfully';
                    }else{
                        $msg = 'Image Uploading Failed.';
                    }
                }else{
                    $msg = 'Error while uploading file, Please try again.';
                }
            }else{
                $msg = 'Image type should be .gif, .png, .jpg or .jpeg.';
            }
        }else{
            $msg = 'Image size is too large.';
        }
    }else{
        $msg = 'Image name cannot be empty.';
    }

}

1 个答案:

答案 0 :(得分:0)

阅读您的错误消息。

您正尝试将文件保存到此位置

images\uploads\slider\'1413996794_::1.jpeg

您当前的工作树中是否存在D:\Work\xampp\htdocs\project\aad\images\uploads\slider\

此外,您的文件名中包含'和2 :个,这些文件名无效。

编辑

首先,您必须从IP地址中删除:,以便它们不会被带入文件名。

其次,我觉得您在使用'时遇到问题,因为您没有正确转义\

试试这个:

// Remove any instance of ':'
$imageFileName = str_replace(":", "", $imageFileName);

// Set the directory, escaping backslashes
$dir = "images\\uploads\\slider\\" . $imageFileName;