爱笔记爱笔记

新浪图床404解决办法恢复显示并缓存图片到本地

新浪图床最新年后新情况大量404急救修复办法

废话不多说代码如下
解决方案将新浪图床的图片下载到当前sina.php目录下的image文件夹里面之后显示这张图片实现图片复活
sina.php上传到哪里就会在哪里创建一个image用来缓存图片

<?php
    /*
    yum.com/sina/sina.php
    yum.com/sina/sina.php?url=https://tvax1.sinaimg.cn/large/005E525vgy1h0ne3zx03fj30sg0fmwl3.jpg
    */
    

    //使用图片头输出浏览器
    header("Content-Type: image/jpeg;text/html; charset=utf-8");

    $upurl = $_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];
    if (stristr($upurl,'url=') == null) {exit;}

    $img_url = $_GET["url"];
    $img_name = basename($img_url);
    // print_r($img_name);

    $ext = strrchr($img_url, ".");
    if ($ext != ".gif" && $ext != ".jpg" && $ext != 'png'){
        //如果图片格式不为.gif 或者.jpg .png,直接退出即可
        return false;
    }

    $dir_path = __DIR__.'/image/'.$img_name;
    if(file_exists($dir_path)){
        // echo "当前目录中,文件".$file."存在";
        $img = file_get_contents($dir_path,true);
        echo $img;
        exit;
    }

    
    $username="/image/";
    $dir = __DIR__ . $username;
    //创建文件夹
    creat_file($dir);
    //存储到指定文件目录判断权限
    $basepath = '/image/';
    $dir_path = __DIR__ . $basepath;
    if (!is_dir($dir_path)) {
        mkdir($dir_path, 0777, true);
    }
    
    ob_start();//打开输出
    readfile($img_url);//输出图片文件
    $img = ob_get_contents();//得到浏览器输出
    ob_end_clean();//清除输出并关闭

    $fp2 = @fopen($dir_path. '/'. $img_name, "a");
    fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
    fclose($fp2);
    // return $img_name;//返回新的文件名
    echo file_get_contents( __DIR__.'/image/'.$img_name,true);
    





    

    function creat_file($dir)
    {
        //创建文件夹
        if(file_exists($dir) && is_dir($dir)){
        }else{
            mkdir ($dir,0777);
        }
    }

本原创文章未经允许不得转载 | 当前页面:爱笔记 » 新浪图床404解决办法恢复显示并缓存图片到本地