php 后端签名获取token,直传到七牛云
<?php
define('accessKey','xxxxxxx');
define('secretKey','xxxxxxxxxxx');
$scope ="tounao";
$deadline = time()+7200;
$returnBody = '{
"name":$(fname),
"size":$(fsize),
"w":$(imageInfo.width),
"h":$(imageInfo.height),
"hash":$(etag)
}';
//构造数据
$putPolicy =[
"scope"=>$scope,
'deadline'=>$deadline,
'returnBody'=>$returnBody
];
function base64_urlSafeEncode($data)// 对提供的数据进行urlsafe的base64编码。
{
$find = array('+', '/');
$replace = array('-', '_');
return str_replace($find, $replace, base64_encode($data));
}
function signWithData($data)
{
$encodedData = base64_urlSafeEncode($data);
return sign($encodedData) . ':' . $encodedData;
}
function sign($data)
{
$hmac = hash_hmac('sha1', $data, secretKey, true);
return accessKey . ':' . base64_urlSafeEncode($hmac);
}
//转化为json
$str = json_encode($putPolicy);
//进行base64编码
$encodedPutPolicy =signWithData($str);
echo $encodedPutPolicy;die;
//var_dump(json_encode($putPolicy));
?>
ajax方式提交数据
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.0/jquery.js"></script>
<form class="upHuzhaoImg1" id="myform2" method="post" action="http://upload-z1.qiniup.com" enctype="multipart/form-data">
<input class="getTime2" name="key" type="hidden" value="自定义文件名称">
<input class="tokenUrl2" name="token" type="text" value="获取的token">
<input onclick="fileClickFun(2,1)" id="upInput2" class="upVideoInput2" style="margin:0;" class="upVideo" name="file" type="file" accept="image/*" value=""/>
<input name="accept" type="hidden" value="" />
</form>
<script type="text/javascript">
function fileClickFun(i,num){
// var date =new Date().getTime();
//$('.getTime'+i).val(date);
$(".upVideoInput"+i).change(function(){
var formData = new FormData($("#myform"+i)[0]);
console.log(formData);
$.ajax({
url:"http://upload-z1.qiniup.com",
type:"post",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success:function(data){
console.log(data);
},
error:function(e){
console.log(e);
}
});
});
}
</script>
form表单提交
<html>
<head>
<meta charset="utf-8">
<title>七牛直传</title>
</head>
<body>
<form method="post" action="http://upload-z1.qiniup.com" enctype="multipart/form-data">
<input name="x:<custom_name>" type="hidden" value="sfsdfsdfsdffsd">
<input name="key" type="hidden" value="66666.jpg">
<input name="token" type="hidden" value="获取到的token">
<input name="file" type="file" />
<input type="submit" value="上传文件" />
</form>
</body>
</html>