You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
5.1 KiB
PHTML

2 years ago
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: yangweijie <yangweijiester@gmail.com>
// +----------------------------------------------------------------------
namespace Admin\Controller;
use Think\Upload\Driver\Qiniu\QiniuStorage;
/**
* 七牛扩展类测试控制器
* @author yangweijie <yangweijiester@gmail.com>
*/
class QiniuController extends AdminController {
public function _initialize(){
$config = array(
'accessKey'=>'__ODsglZwwjRJNZHAu7vtcEf-zgIxdQAY-QqVrZD',
'secrectKey'=>'Z9-RahGtXhKeTUYy9WCnLbQ98ZuZ_paiaoBjByKv',
'bucket'=>'blackwhite',
'domain'=>'blackwhite.u.qiniudn.com'
);
$this->qiniu = new QiniuStorage($config);
parent:: _initialize();
}
//获取文件列表
public function index(){
$this->meta_title = '七牛云存储测试';
$map = array();
$prefix = trim(I('post.prefix'));
if($prefix)
$map['prefix'] = $prefix;
$list = $this->qiniu->getList($map);
if(!$list)
trace($this->qiniu->error);
$this->assign('qiniu', $this->qiniu);
$this->assign('_list', $list['items']);
$this->display();
}
public function del(){
$file = trim(I('file'));
if($file){
$result = $this->qiniu->del($file);
if(false === $result){
$this->error($this->qiniu->errorStr);
}else{
$this->success('删除成功');
}
}else{
$this->error('错误的文件名');
}
}
public function dealImage($key){
$url = $this->qiniu->dealWithType($key, 'img') ;
redirect($url);
}
public function dealDoc($key){
$url = $this->qiniu->dealWithType($key, 'doc');
redirect($url);
}
public function rename(){
$key = I('get.file');
$new = I('new_name');
$result = $this->qiniu->rename($key, $new);
if(false === $result){
trace($this->qiniu->error);
$this->error($this->qiniu->errorStr);
}else{
$this->success('改名成功');
}
}
public function batchDel(){
$files = $_GET['key'];
if(is_array($files) && $files !== array()){
$files = array_column($files,'value');
$result = $this->qiniu->delBatch($files);
if(false === $result){
$this->error($this->qiniu->errorStr);
}else{
$this->success('删除成功');
}
}else{
$this->error('请至少选择一个文件');
}
}
public function detail($key){
$result = $this->qiniu->info($key);
if($result){
if(in_array($result['mimeType'], array('image/jpeg','image/png'))){
$img = "<img src='{$this->qiniu->downlink($key)}?imageView/2/w/203/h/203'>";
}else{
$img = '<img class="file-prev" src="https://dn-portal-static.qbox.me/v104/static/theme/default/image/resource/no-prev.png">';
}
$time = date('Y-m-d H:i:s', bcmul(substr(strval($result['putTime']), 0, 11),"1000000000"));
$filesize = format_bytes($result['fsize']);
$tpl = <<<tpl
<div class="right-head">
{$key}
</div>
<div class="right-body">
<div class="right-body-block">
<div class="prev-block">
{$img}
</div>
<p class="file-info-item">
外链地址:<input class="file-share-link" type="text" readonly="readonly" value="{$this->qiniu->downlink($key)}">
</p>
<p class="file-info-item">
最后更新时间:<span>{$time}</span>
</p>
<p class="file-info-item">
文件大小:<span class="file-size">{$filesize}</span>
</p>
</div>
</div>
tpl;
$this->success('as', '', array('tpl'=>$tpl));
}else{
$this->error('获取文件信息失败');
}
}
//上传单个文件 用uploadify
public function uploadOne(){
$file = $_FILES['qiniu_file'];
$file = array(
'name'=>'file',
'fileName'=>$file['name'],
'fileBody'=>file_get_contents($file['tmp_name'])
);
$config = array();
$result = $this->qiniu->upload($config, $file);
if($result){
$this->success('上传成功','', $result);
}else{
$this->error('上传失败','', array(
'error'=>$this->qiniu->error,
'errorStr'=>$this->qiniu->errorStr
));
}
exit;
}
}