72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								require_once __DIR__ . '/../autoload.php';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use Qiniu\Auth;
							 | 
						|||
| 
								 | 
							
								use Qiniu\Config;
							 | 
						|||
| 
								 | 
							
								use Qiniu\Storage\BucketManager;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 控制台获取密钥:https://portal.qiniu.com/user/key
							 | 
						|||
| 
								 | 
							
								$accessKey = getenv('QINIU_ACCESS_KEY');
							 | 
						|||
| 
								 | 
							
								$secretKey = getenv('QINIU_SECRET_KEY');
							 | 
						|||
| 
								 | 
							
								$bucket = getenv('QINIU_TEST_BUCKET');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$auth = new Auth($accessKey, $secretKey);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$config = new Config();
							 | 
						|||
| 
								 | 
							
								$config->useHTTPS = true; // 接口是否使用 HTTPS 协议
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$bucketManager = new BucketManager($auth, $config);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 异步第三方资源抓取
							 | 
						|||
| 
								 | 
							
								// 参考文档:https://developer.qiniu.com/kodo/api/4097/asynch-fetch
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 需要抓取的文件 URL
							 | 
						|||
| 
								 | 
							
								$url = 'http://devtools.qiniu.com/qiniu.png';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//回调 URL(需要可以公网访问,并能够相应 200 OK)
							 | 
						|||
| 
								 | 
							
								$callbackurl = "http://your.domain.com/upload_verify_callback.php";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 回调Body
							 | 
						|||
| 
								 | 
							
								$callbackbody = '{"key":"$(key)","hash":"$(etag)","w":"$(imageInfo.width)","h":"$(imageInfo.height)"}';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//---------------------------------------- demo1 ----------------------------------------
							 | 
						|||
| 
								 | 
							
								// 指定抓取的文件保存到七牛云空间中的名称
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$key = time() . '.png';
							 | 
						|||
| 
								 | 
							
								list($ret, $err) = $bucketManager->asynchFetch($url, $bucket, null, $key, null, null, $callbackurl, $callbackbody);
							 | 
						|||
| 
								 | 
							
								echo "=====> asynch fetch $url to bucket: $bucket  key: $key\n";
							 | 
						|||
| 
								 | 
							
								if ($err !== null) {
							 | 
						|||
| 
								 | 
							
								    var_dump($err);
							 | 
						|||
| 
								 | 
							
								} else {
							 | 
						|||
| 
								 | 
							
								    $id = $ret['id'];
							 | 
						|||
| 
								 | 
							
								    echo "id is: $id\n";
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//---------------------------------------- demo2 ----------------------------------------
							 | 
						|||
| 
								 | 
							
								// 不指定 key 时,以文件内容的 hash 作为文件名
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$key = null;
							 | 
						|||
| 
								 | 
							
								list($ret, $err) = $bucketManager->asynchFetch($url, $bucket, null, $key, null, null, $callbackurl, $callbackbody);
							 | 
						|||
| 
								 | 
							
								echo "=====> asynch fetch $url to bucket: $bucket  key: $(etag)\n";
							 | 
						|||
| 
								 | 
							
								if ($err !== null) {
							 | 
						|||
| 
								 | 
							
								    var_dump($err);
							 | 
						|||
| 
								 | 
							
								} else {
							 | 
						|||
| 
								 | 
							
								    $id = $ret['id'];
							 | 
						|||
| 
								 | 
							
								    echo "id is: $id\n";
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 查询异步抓取的进度和状态
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 华东:z0,华北:z1,华南:z2,北美:na0,东南亚:as0
							 | 
						|||
| 
								 | 
							
								$zone = 'z2';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								sleep(10); // 由于异步抓取需要耗时,等待 10 秒后再查询状态
							 | 
						|||
| 
								 | 
							
								list($ret, $err) = $bucketManager->asynchFetchStatus($zone, $id);
							 | 
						|||
| 
								 | 
							
								echo "\n====> asynch fetch status: \n";
							 | 
						|||
| 
								 | 
							
								if ($err != null) {
							 | 
						|||
| 
								 | 
							
								    var_dump($err);
							 | 
						|||
| 
								 | 
							
								} else {
							 | 
						|||
| 
								 | 
							
								    var_dump($ret);
							 | 
						|||
| 
								 | 
							
								}
							 |