开发者社区 问答 正文

请教个从PHPSDKV1加载OSS图像文件并显示的问题

图像我也是用sdk上传到oss的,
所以key,bucket,object 应该是无误的


上传得到的response
|-----------------------Start---------------------------------------------------------------------------------------------------|-Status:200|-Body:|-Header:Array([date] => Wed, 05 Nov 2014 02:54:41 GMT[content-length] => 0[connection] => close[etag] => "3B6CD51234761E443DF4F6E47E08E87F"[server] => AliyunOSS[x-oss-request-id] => 54599171C76B291877298BDF[_info] => Array([url] => [font=Consolas, 'Lucida Console', monospace](新手不能发连接贴)oss.aliyuncs.com/****/post/20141105105441_4841214976.jpg[content_type] =>[http_code] => 200[header_size] => 224[request_size] => 409[filetime] => -1[ssl_verify_result] => 0[redirect_count] => 0[total_time] => 0.281633[namelookup_time] => 0.041011[connect_time] => 0.072625[pretransfer_time] => 0.072653[size_upload] => 49151[size_download] => 0[speed_download] => 0[speed_upload] => 174521[download_content_length] => -1[upload_content_length] => 49151[starttransfer_time] => 0.10801[redirect_time] => 0[method] => PUT)[x-oss-request-url] => [font=Consolas, 'Lucida Console', monospace](新手不能发连接贴)oss.aliyuncs.com/****/post/20141105105441_4841214976.jpg[x-oss-redirects] => 0[x-oss-stringtosign] => PUTimage/jpegWed, 05 Nov 2014 02:54:41 GMT/nectar/post/20141105105441_4841214976.jpg[x-oss-requestheaders] => Array([Content-Type] => image/jpeg[Date] => Wed, 05 Nov 2014 02:54:41 GMT[Host] => oss.aliyuncs.com[Authorization] => OSS 5wcswy7nr0uTIatH:CUzjryZM2i9s5Esm0+Da70cB3NA=))-----------------------End-----------------------------------------------------------------------------------------------------






当我尝试这样
$oss = new ALIOSS();
$imglink = $oss->get_sign_url(OSS_BUCKET,$object);
echo "<img src='{$imglink}'>";


的时候,并不显示图片...查看资源的header 提示 403


  1. 请求方式:
    GET

  2. 状态代码:

    403 Forbidden
  3. 请求 HTTP 报头查看源代码

  4. Accept:
    image/webp,*/*;q=0.8

  5. Accept-Encoding:
    gzip,deflate

  6. Accept-Language:
    zh-CN

  7. Cache-Control:
    no-cache

  8. Connection:
    keep-alive

  9. DNT:
    1

  10. Host:
    oss.aliyuncs.com

  11. Pragma:
    no-cache

  12. Referer:[]
    *(新手不能发连接贴)***********/testossupload.php

  13. User-Agent:
    Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.0.3000 Chrome/30.0.1599.101 Safari/537.36
Query String 参数 查看源代码 查看编码后的 URL

  1. OSSAccessKeyId:
    5wcswy7nr0uTIatH

  2. Expires:
    1415153937

  3. Signature:
    ltM3tOVjZUKOCIN+xBFXvowIJlI=
响应 HTTP 报头 查看源代码

  1. Connection:
    close

  2. Content-Length:
    238

  3. Content-Type:
    application/xml

  4. Date:
    Wed, 05 Nov 2014 02:17:57 GMT

  5. Server:
    AliyunOSS

  6. x-oss-request-id:
    545988D5E46892530E25FDDF



我尝试把$imglink直接输入在浏览器的地址栏,提示下载文件..,下载的文件保存下来是我要显示的文件没错,但..为什么会是下载,不是直接显示呢?
是和Content-Disposition: attachment有关吗?我尝试在 get_sign_url() 加入$option参数来指定



$option = array(
        ALIOSS::OSS_CONTENT_TYPE => 'image/jpeg',
                ALIOSS::OSS_CONTENT_DISPOSTION => ''
    );
但也没有效果,而且根据API手册,这个在不指定的时候默认值应该也是空的才对吧
------------------------------------------------------------------
后来也尝试单独写一个脚本img.php读取oss 改用



include("sdk.class.php");
$oss = new ALIOSS();
$res =  $oss->get_object(OSS_BUCKET,$object);
$data = $res->body;
//header("Content-type: image/jpeg");
//header("Content-Length: ".strlen($data));
echo $data;
结果浏览器直接显示了jpg的源码晕死了
加上headr()声明头 content-type之后报错
Warning [font='']: Cannot modify header information - headers already sent by (output started at /mnt/array1/wwwroot/htdocs/..../oss/sdk.class.php:1) in /mnt/array1/wwwroot/htdocs/..../oss/img.php [font=''] on line 18


是我调用的方法不对?上传的时候传少了参数?还是$option没有定义对?还是什么原因/

展开
收起
工口勇者 2014-11-05 11:03:09 10241 分享 版权
2 条回答
写回答
取消 提交回答
  • Re请教个从PHPSDKV1加载OSS图像文件并显示的问题
    你这个bucket设置了referer白名单,但是你的referer又不在那个列表里,所以access denied。
    2014-11-06 13:34:17
    赞同 展开评论
  • Re请教个从PHPSDKV1加载OSS图像文件并显示的问题
    晕死了,贴出来格式全乱了...这个论坛程序到底是什么鬼
    2014-11-05 11:03:54
    赞同 展开评论