业务经理

微信扫描以上二维码

028-61286886

技术咨询

远程获取的图片不是一张可用的图片

迅睿框架 更新 2020-08-30 21:58:43 SMALL
public function upload(){
  
  $url = "https://oss.aiqu.com/data/upload/game/20190226/5c7528c5d8df6.png";
  $apifile = ROOTPATH.'api/game/sdk.php';
        if (!is_file($apifile)) {
            return dr_return_data(0, dr_lang('接口文件不存在'));
        }
  require $apifile;
  print_r($sdk->upload($url,"测试-small".time()));
 }
 
 
 
 /**
 *远程图片本地化
 *@param string $img_url 图片地址
 *@return int 归档id
 */
 public function upload($img_url,$title){
  $rt = \Phpcmf\Service::L('upload')->down_file([
   'url' => $img_url,
   'attachment' => \Phpcmf\Service::M('attachment')->get_attach_info(1), // 0值不属于存储策略,填写策略ID号表示附件存储策略,可以是远程存储,可以是本地存储,如果不用存储策略就填0
  ]);
  if ($rt['code']) {
   
   // 附件归档 可选
   $att = \Phpcmf\Service::M('attachment')->save_data($rt['data'], $title);
   if ($att['code']) {
    return $att['code'];
   }else{
    return $att;
   }

  } else {
   return $rt;
  }
 }

提示:Array ( [code] => 0 [msg] => 远程获取的图片不是一张可用的图片 [data] => Array ( ) );

有哪位大佬知道原因吗?


方案

  • 易学习 #1 · 2020-08-30 21:39:23
    说明图片无法通过php程序下载,换一张图片、换一个url的图片,试一试,排除法是不是图片文件问题还是图片服务器的问题
  • 易学习 #2 · 2020-08-30 21:40:24
    config/rewrite.php
    "tag\-([\w]+)\-([0-9]+).html(.*)"  => 'index.php?s=tag&name=$1&page=$2',
    <?ph $rule ="tag-".$get.name."-[page].html"; ?>{related module=$c.dirname tag=$tag.tags page=1 pagesize=10 urlrule=$rule}你这个循环体里面分页啊,我觉得不现实,因为一个页面只能有一个分页标签
  • SMALL #3 · 2020-08-30 21:45:43
    易学习 换了图片 也提示一样,还有二楼是回复错了么
  • 易学习 #4 · 2020-08-30 21:51:36
    满意答案
    回复错了,我本地运行你的代码可以下载啊
    image
  • SMALL #5 · 2020-08-30 21:53:01
    /**
         * 下载文件
         */
        public function down_file($config) {
    
            /*
            $client = \Config\Services::curlrequest();
            $res = $client->get($config['url'], [
                'timeout' => (int)$config['timeout'],
            ]);
            if ($res->getStatusCode() == 200) {
                $data = $res->getBody();
            } else {
                log_message('error', '服务器无法下载文件:'.$config['url']);
                return dr_return_data(0, dr_lang('文件下载失败'));
            }*/
    
            $data = dr_catcher_data($config['url'], (int)$config['timeout']);
            if (!$data) {
                log_message('error', '服务器无法下载文件:'.$config['url']);
                return dr_return_data(0, dr_lang('文件下载失败'));
            }
    
            $name = substr(md5(SYS_TIME.uniqid().$config['url']), rand(0, 20), 15); // 随机新名字
            $file_ext = $this->_file_ext($config['url']); // 扩展名
    
            // 安全验证
            $rt = $this->_safe_check($file_ext, $data);
            if (!$rt['code']) {
                return dr_return_data(0, $rt['msg']);
            }
    
            $file_name = $this->_file_name($config['url']); // 文件实际名字
            if (!$file_ext) {
                log_message('error', '无法获取文件扩展名:'.$config['url']);
                return dr_return_data(0, dr_lang('无法获取文件扩展名'));
            }
    
            // 保存目录名称
            $path = isset($config['path']) && $config['path'] ? $config['path'].'/' : date('Ym', SYS_TIME).'/';
            $file_path = $path.$name.'.'.$file_ext;
    
            // 开始上传存储文件
            $rt = $this->save_file('content', $data, $file_path, $config['attachment'], (int)$config['watermark']);
            if (!$rt['code']) {
                return dr_return_data(0, $rt['msg']);
            }
            
            // 上传成功
            $url = $config['attachment']['url'].$file_path;
    
            // 如果是图片先获取图片尺寸
            $info = [];
            if (in_array($file_ext, ['jpg', 'jpeg', 'png', 'gif'])) {
    
                list($info['width'], $info['height']) = @getimagesize($config['attachment']['value']['path'].$file_path);
                // $img = getimagesize($config['attachment']['value']['path'].$file_path);
                // if (!$img) {
                //     // 删除文件
                //     // 按照附件存储类型来保存文件
                //     $storage = new \Phpcmf\Library\Storage();
                //     $storage->delete($config['attachment'], $file_path);
                //     return dr_return_data(0, dr_lang('远程获取的图片不是一张可用的图片'));
                // }
                // $info = [
                //     'width' => $img[0],
                //     'height' => $img[1],
                // ];
            }
    
            // 文件预览
            $preview = dr_file_preview_html($url);
            return dr_return_data(1, 'ok', [
                'ext' => $file_ext,
                'url' => $url,
                'md5' => md5($data),
                'file' => $file_path,
                'size' => (int)$rt['data']['size'],
                'path' => $config['attachment']['value']['path'].$file_path,
                'name' => $file_name,
                'info' => $info,
                'remote' => $config['attachment']['id'],
                'preview' => $preview,
            ]);
        }
    系统bug 结帖
  • 易学习 #6 · 2020-08-30 21:54:20
    我没改过系统,所以应该不是系统bug,我可以直接使用,难道是你哪个php.ini没有配置?
  • 易学习 #7 · 2020-08-30 21:56:33
    五元,能不能领呢,我确实运行你的代码没有报错。。。
  • SMALL #8 · 2020-08-30 21:58:27
    易学习 交个朋友,是我这边没有更新代码 这块看git 已经去掉我贴图注释那块代码了
  • SMALL #9 · 2020-08-30 21:58:43
    @易学习:热心网友

迅睿系统漏洞

站群分站系统
站群分站系统(2026-10-15)
子站域名新增llms.txt访问
图书阅读系统
图书阅读系统(2026-10-14)
全站移动端样式适配 首页分类 Tab 横滑容器,左右渐变滚动提示 ...
GEO系统
GEO系统(2026-10-14)
修复下载zip空白地址问题 修复流量复刻和任务队列错误
GeoSeo收录宝
GeoSeo收录宝(2026-10-14)
新增 站长工具箱 前端首页自动调用meta 数据
滑块验证码 Gocaptcha
滑块验证码 Gocaptcha(2026-10-13)
基于开源项目 go-captcha 的行为验证码插件,滑动拼图、区域...
GeoSeo工具箱
GeoSeo工具箱(2026-10-13)
优化巡检任务
GeoSeo排名助手
GeoSeo排名助手(2026-10-11)
加入大模型自定义
SEO聚合关键字
SEO聚合关键字(2026-10-11)
优化关键字列表页最多支持1万篇文章,过多会导致服务器扛不住;