使用PHP如何上传url地址的文件

七牛上的文档只有上传字符串和本地文件,如果是一个网址应该如何操作,或者有什么折中的方案。
比如:http://img0.bdstatic.com/img/image/271-271-f.jpg

万分感谢!

官方文档:
上传字符串

require_once("qiniu/io.php");
require_once("qiniu/rs.php");

$bucket = "phpsdk";
$key1 = "file_name1";
$accessKey = '';
$secretKey = '';

Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
list($ret, $err) = Qiniu_Put($upToken, $key1, "Qiniu Storage!", null);
echo "====> Qiniu_Put result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}

上传本地文件

require_once("qiniu/io.php");
require_once("qiniu/rs.php");

$bucket = "phpsdk";
$key1 = "file_name1";
$accessKey = '';
$secretKey = '';

Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
$putExtra = new Qiniu_PutExtra();
$putExtra->Crc32 = 1;
list($ret, $err) = Qiniu_PutFile($upToken, $key1, file, $putExtra);
echo "====> Qiniu_PutFile result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}

阅读 5.5k
3 个回答

如果是直接将公网上的资源抓取到七牛的空间里,可以使用fetch接口

<?php
require_once('../qiniu/rs.php');
require_once('../qiniu/conf.php');
$client = new Qiniu_MacHttpClient(null);
$ret = Qiniu_RS_Fetch($client, 'http://rwxf.qiniucdn.com/1.jpg', 'rwxf', 'qiniu.jpg');
var_dump($ret);

高唱大江同志,我gethub看到的也是这段代码
我运行之后,它提示Call to undefined function Qiniu_RS_Fetch()
找不到这个过程函数,怎么办?

phpQiniu_SetKeys(ACCESSKEY, SECRETKEY);
$http=new Qiniu_MacHttpClient(null);
$r= Qiniu_RS_Fetch( $http, $url, BUCKET, $key);
if($r===null){
    return true;
}else {
    return $r;
}

实测可以抓去 微信接口的图片

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进