如何在保存文件之前验证图像

时间:2015-04-02 10:22:47

标签: php image file-handling

我有一个将图像保存在相应文件夹中的功能。

我想检查图像是否已存在于文件夹中,如果名称相同,则首先使用名称,然后使用图像的SHA1

我当前的功能看起来像这样

function descargarImagen($id,$url,$pais1)
{


    $ruta = rutaBaseImagen($id,$_POST['pais']);

    $contenido = file_get_contents($url);

    $ext = explode('.', $url);
    $extension = $ext[count($ext) -1];

    $imagen['md5'] = md5($contenido);
    $imagen['sha1'] = sha1($contenido);
    $imagen['nombre'] = $imagen['md5'].'.'.$extension;

    $ficherof = $pais[$pais1]['ruta_imagenes'].'/'.$ruta.'/'.$imagen['nombre'];
    $ficherof = str_replace('//', '/', $ficherof);

//Here before putting the file I want to check if the image already exist in the folder


    file_put_contents($ficherof, $contenido);

    $s = getimagesize($ficherof);

    $imagen['mime'] = $s["mime"];
    $imagen['size'] = $s[0].'x'.$s[1];
    $imagen['url'] = $urlbase_imagenes.'/'.$ruta.'/'.$imagen['nombre'];
    $imagen['url'] = str_replace('//', '/', $imagen['url']);
    $imagen['date'] = time();
    $imagen['fichero'] = $ficherof;

    return $imagen;
}

我试图以两种方式验证 1.如果图像的名称存在于文件夹中。 2.如果存在则检查图像是相同还是不同,因为可能有新图像但名称相同

任何建议都将受到赞赏

先谢谢

2 个答案:

答案 0 :(得分:2)

这条评论给出的提示:

//Here before putting the file I want to check if the image already exist in the folder

让我觉得你要求file_exists,这是你搜索" php文件存在的第一件事。"在任何搜索引擎......

答案 1 :(得分:2)

你可以使用它,

// Check if file already exists
if (file_exists($target_file)) {
    //echo "Sorry, file already exists.";

    /** 
    * validate images that are different but have same name 
    * we can use base64_encode function to compare the old and new image 
    * basics: http://php.net/manual/en/function.base64-encode.php 
    * online conversion help: http://freeonlinetools24.com/base64-image
    */
    $base64_encoded_new_image=base64_encode(file_get_contents($name_of_your_new_image_that_you_want_to_upload));
    $base64_encoded_old_image=base64_encode(file_get_contents($name_of_the_image_that_already_exists));
    if ($base64_encoded_new_image!=$base64_encoded_old_image) {
        /** so the images are actually not same although they have same name 
        * now do some other stuffs
        */
    }
}

有关详细信息,请访问http://www.w3schools.com/php/php_file_upload.asp