如何使用 HTTP REST API 实现文件流方式直接下载文件

官方提供的 php-sdk 中提供了两种文件下载的方式:

  1. 直接读取文件内容:

       $data = $upyun->readFile('/temp/upload_demo.png');
    
  2. 使用文件流模式下载:

       $fh = fopen('/tmp/demo.png', 'w');
       $upyun->readFile('/temp/upload_demo.png', $fh);
       fclose($fh);
    
       注:直接获取文件时,返回文件内容,使用数据流形式获取时,成功返回true。 如果获取文件失败,则抛出异常。
    

其中,第二种“文件流模式下载”是通过文件流方式把文件下载到服务器。但是我希望的是,能不能以文件流的方式直接读取又拍云上的文件,然后直接返回给客户端来实现下载。

因为按照上面的方法,我需要实现文件流下载文件,就只能通过服务器端中转一下。

当然,用浏览器直接打开文件地址的话,有一些文件可以下载,但是有一些比如视频和图片等等就无法下载,所以直接以浏览器打开的方式下载文件行不通。

希望大家给点思路,谢谢!

php-sdk 地址:https://github.com/upyun/php-sdk
又拍云关于文件下载的说明:http://docs.upyun.com/api/rest_api/#_8

阅读 8.2k
1 个回答