利用Thinkphp5.1上傳文件到七牛雲平臺
使用必讀:
1.作者使用form提交到七牛雲平臺
2.手動生成token,提交到七牛雲,執行回調
3.在回調裏做業務流程,前臺頁面判斷是否上傳成功
4.七牛雲測試域名只可以使用30天
1.登錄到七牛雲創建對象存儲
2.查看創建的對象儲存域名以及祕鑰
祕鑰 ->個人中心->祕鑰管理
3.下載第三方類庫,裏面是七牛雲封裝好的類 composer require qiniu/php-sdk
下載好之後vendor裏面會有七牛雲類庫
4.引入第三方類庫以及生成token攜帶到前臺頁面
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
public function test(Request $request)
{
$accessKey = '';
$secretKey = '';
$auth = new Auth($accessKey, $secretKey);
// 要上傳的空間
$bucket = '';
$returnBody=[
"key"=>"$(key)",
"bucket"=>"$(bucket)",
"myname"=>"",
];
$policy=[
'callbackUrl' => 'http://3/admin/music/callbask', //回調地址
'callbackBody' => 'filename=$(key)&filesize=$(fsize)&id='.$music['id'],//參數,可增加
'saveKey'=>"$(year)$(mon)$(day)$(hour)$(min)$(sec)$(fname)",//固定參數
'returnBody'=>json_encode($returnBody),//固定參數
];
$token = $auth->uploadToken($bucket,null,3600,$policy);//生成token
$this->assign('token',$token);
return view();
}
前臺頁面
<form id="setForm" method="post" enctype="multipart/form-data">
<table class="table tb-type2">
<tbody>
<input name="token" type="hidden" value="{$token}" id="token">
<tr>
<td class="tr">音頻</td>
<td>
<input class="txt" type="file" id="file" name="file" style="border:0;background:none;">
</td>
</tr>
<tr>
<td class="tr"> </td>
<td>
<div id="submit" class="btn btn-success">確定保存</div>
</td>
</tr>
</tbody>
</table>
</form>
JS代碼
$("#submit").on('click',function(){
var formdata=new FormData();
formdata.append('token',$("#token").val());
formdata.append('file',$("#file")[0].files[0]);
$.ajax({
type:'post',
url:'http://up-z2.qiniup.com/',//華南地圖用改地址就可以
data:formdata,
cache: false,
contentType:false,
processData: false,
dataType:"json",
error: function(request) {
alert(request.status);
return false;
},
success: function(data) {
if(data.ret == 'success'){
alert('操作成功');
return false;
}else{
alert('操作失敗');
return false;
}
}
});
return false;
});
回調方法
public function callbask()
{
dump(input('post.'));//打印你攜帶的參數
//祕鑰
$accessKey = '';
$secretKey = '';
//空間名稱
$bucket = getenv('');
$auth = new Auth($accessKey, $secretKey);
//獲取回調的body信息
$callbackBody = file_get_contents('php://input');
//回調的contentType
$contentType = 'application/x-www-form-urlencoded';
//回調的簽名信息,可以驗證該回調是否來自七牛
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
//回調地址,填寫本方法即可
$url = 'http://39.105.1/admin/music/callbask';
$isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);
if ($isQiniuCallback) {
$resp = array('ret' => 'success');
} else {
$resp = array('ret' => 'failed');
}
//響應七牛雲服務器
echo json_encode($resp);
}
這樣就可以上傳到七牛雲服務器了