官方提供的php sdk 不能上传文件

$bucket = 'yk-gtg';
$key1 = 'file_name_1';
$file = '7e3e6709c93d70cff5eb6e63f8dcd100baa12b4f.jpg';//file_exists返回true 
$domain = 'yk-gtg.qiniudn.com';

//在配置文件里面已经设置了key
$client = new Qiniu_MacHttpClient(null);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
$putExtra = new Qiniu_PutExtra();
//$putExtra->Crc32 = 1;
$res = Qiniu_PutFile($upToken, $key1, $file, $putExtra);

$res=>
array(2) {
  [0]=>
  NULL
  [1]=>
  object(Qiniu_Error)#8 (4) {
    ["Err"]=>
    string(65) "couldn't open file 7e3e6709c93d70cff5eb6e63f8dcd100baa12b4f.jpg"
    ["Reqid"]=>
    NULL
    ["Details"]=>
    NULL
    ["Code"]=>
    int(0)
  }
}

但是如果使用 Qiniu_Rio_PutFile(上传同一个文件) 却可以上传成功

阅读 4.1k
1 个回答

这个错误提示就是你的这个文件要么不在你的上传目录下,要么就是你没有权限访问这个文件,你换个文件尝试一下呢,另外phpsdk的develop分支上是有上传的demo的。下面的代码和你的差不多,你看看你能不能上传你本身的代码文件。

<?php

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

$bucket = 'test';
$key1 = 'test';
$file = 'up_demo.php';

$client = new Qiniu_MacHttpClient(null);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$putPolicy->Scope = "$bucket:$key1";
$putPolicy->EndUser = 'fuck';
$upToken = $putPolicy->Token(null);

$putExtra = new Qiniu_PutExtra();
$putExtra->Crc32 = 1;
list($ret, $err) = Qiniu_PutFile($upToken, $key1, $file, $putExtra);
echo "\n\n====> Qiniu_PutFile result: \n";
if ($err !== null) {
    var_dump($err);
} else {
    var_dump($ret);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进