ks3的callback现在是原子性的,callback成功,对象上传成功,callback失败,对象上传失败。put一个对象到ks3的时候可以自定义callback,callback失败以后会ks3会删除该对象。在上传完成到callback失败的过程中,只有ks3知道这个对象的存在,我们外部用户对这个对象是不可见的。
服务端如下:
package main
import (
"github.com/gin-gonic/gin"
"time"
)
func main() {
r := gin.Default()
r.GET("/success", func(c *gin.Context) {
c.JSON(200, gin.H{
"result": true,
})
})
r.GET("/fail", func(c *gin.Context) {
c.JSON(200, gin.H{
"result": false,
})
})
r.POST("/success", func(c *gin.Context) {
c.JSON(200, gin.H{
"result": true,
})
})
r.POST("/fail", func(c *gin.Context) {
time.Sleep(time.Duration(20)*time.Second)
c.JSON(200, gin.H{
"result": false,
})
})
r.Run(":80") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
先用go run main.go把服务端跑起来。
客户端代码如下:
<?php
require_once "ks3-php-sdk/Ks3Client.class.php";
$client = new Ks3Client("$accessKey",
"$secretKey","ks3-cn-beijing.ksyun.com");
//echo $client->listBuckets();
//上传文件
$content = fopen("./cloud.png", "r");
$args = array(
"Bucket"=>"ks3-callback-test-bj",
"Key"=>"cloud.png",
"Content"=>array(//要上传的内容
"content"=>$content,//可以是文件路径或者resource,如果文件大于2G,请提供文件路径
"seek_position"=>0//跳过文件开头?个字节
),
"ACL"=>"public-read",//可以设置访问权限,合法值,private、public-read
"ObjectMeta"=>array(//设置object的元数据,可以设置"Cache-Control","Content-Disposition","Content-Encoding",
//"Content-Length","Content-MD5","Content-Type","Expires"。当设置了Content-Length时,
//最后上传的为从seek_position开始向后Content-Length个字节的内容。当设置了Content-MD5时,系统会在服务端进行md5校验。
"Content-Type"=>"binay/ocet-stream"
//"Content-Length"=>4
),
"UserMeta"=>array(//可以设置object的用户元数据,需要以x-kss-meta-开头
"x-kss-meta-test"=>"test"
),
"CallBack"=>array(
// "Url"=>"http://110.3.3.11/success",
"Url"=>"http://110.3.3.11/fail",
"BodyMagicVariables"=>array("bucket"=>"bucket","key"=>"key"),//魔法变量,key=>value中的value将被最后的实际值替换,
//比如"bucket"=>"bucket"替换为"bucket"=>"<上传的bucket>"。支持:"bucket","key","etag","objectSize","mimeType","createTime"
"BodyVariables"=>array("name"=>"lijunwei")//自定义KS3回调时需要在body中带的参数
)
);
echo "*******************";
try {
echo $client->putObjectByFile ($args);
} catch (Ks3ServiceException $exception) {
echo $exception;
}
echo "*******************";
在控制台执行php index.php就可以。
搜索
标签
study
ab
amap
apache
apahe
awk
aws
bat
centos
CFS
chrome
cmd
cnpm
composer
consul
crontab
css
curl
cygwin
devops
di
docker
docker,docker-compose
ethereum
excel
fiddler
fluentd
framework
front-end
git
gitgui
github
glide
go
golang
gorm
grafana
gzip
ioc
item2
iterm2
javascript
jenkins
jsonp
kafka
laradock
laravel
larval
linux
liunux
log
mac
mac, wi-fi
macos
magento
mariaDB
minikube
mongoDB
msp
mysql
netbeans
nginx
nodejs
nohup
npm
nsq
php
php-fpm
php7
phpstorm
php扩展
Protobuf
python
redis
scp
server
shell
soap
socket
socket5
sql
sre
ssdb
ssh
ssl
study
sublime
swift
system
td-agent
uml
v2ray
vagrant
vagrnat
vim
vpn
vue
vue.js
webpack
webrtc
websocket
webtatic
windows
windows7
word
wps
xdebug
yarn
yii2
yum
zookeeper
世界国家
互联网
以太坊
分类
前端
小程序
打印机
排序算法
搞笑
权限
粤语
缓存
网络
虚拟机
视频
设计模式
项目管理
热门文章
友情链接