联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
远程获取的图片不是一张可用的图片
类型:迅睿CMS 更新时间:2020-08-30 21:58:43
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
    Chrome 0
    说明图片无法通过php程序下载,换一张图片、换一个url的图片,试一试,排除法是不是图片文件问题还是图片服务器的问题
  • 易学习
    #2楼    易学习
    2020-08-30 21:40:24
    Chrome 0
    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楼    SMALL
    2020-08-30 21:45:43
    Chrome 0
    易学习 换了图片 也提示一样,还有二楼是回复错了么
  • 易学习
    #4楼    易学习
    2020-08-30 21:51:36
    Chrome 0
    回复错了,我本地运行你的代码可以下载啊
    image
    满意答案
  • SMALL
    #5楼    SMALL
    2020-08-30 21:53:01
    Chrome 0
    /**
         * 下载文件
         */
        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
    Chrome 0
    我没改过系统,所以应该不是系统bug,我可以直接使用,难道是你哪个php.ini没有配置?
  • 易学习
    #7楼    易学习
    2020-08-30 21:56:33
    Chrome 0
    五元,能不能领呢,我确实运行你的代码没有报错。。。
  • SMALL
    #8楼    SMALL
    2020-08-30 21:58:27
    Chrome 0
    易学习 交个朋友,是我这边没有更新代码 这块看git 已经去掉我贴图注释那块代码了
  • SMALL
    #9楼    SMALL
    2020-08-30 21:58:43
    Chrome 0
    @易学习:热心网友