默认本地上传;判断是否已经存在附件,已存在则不上传

pull/279748/MERGE^2
PPPSCN 2017-05-05 15:35:59 +08:00
parent 716bb2e2c5
commit e10619221f
5 changed files with 28 additions and 11 deletions

View File

@ -93,7 +93,9 @@ CREATE TABLE `fa_attachment` (
`createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建日期', `createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建日期',
`updatetime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', `updatetime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
`uploadtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '上传时间', `uploadtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '上传时间',
PRIMARY KEY (`id`) `sha1` varchar(40) NOT NULL DEFAULT '' COMMENT '文件 sha1编码',
PRIMARY KEY (`id`),
UNIQUE KEY `sha1` (`sha1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='附件表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='附件表';
-- ---------------------------- -- ----------------------------

View File

@ -183,6 +183,16 @@ class Ajax extends Backend
{ {
$this->code = -1; $this->code = -1;
$file = $this->request->file('file'); $file = $this->request->file('file');
//判断是否已经存在附件
$sha1 = $file->hash();
$uploaded = model("attachment")->where('sha1',$sha1)->find();
if($uploaded){
$this->code = 200;
$this->data = $uploaded['url'];
return;
}
$upload = Config::get('upload'); $upload = Config::get('upload');
preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches); preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches);
@ -230,7 +240,8 @@ class Ajax extends Backend
'imageframes' => 0, 'imageframes' => 0,
'mimetype' => $fileInfo['type'], 'mimetype' => $fileInfo['type'],
'url' => $uploadDir . $splInfo->getSaveName(), 'url' => $uploadDir . $splInfo->getSaveName(),
'uploadtime' => time() 'uploadtime' => time(),
'sha1' => $sha1,
); );
model("attachment")->create(array_filter($params)); model("attachment")->create(array_filter($params));
$this->code = 200; $this->code = 200;

View File

@ -5,19 +5,19 @@ return [
/** /**
* 上传地址,如果不使用又拍云,则可以使用/ajax/upload * 上传地址,如果不使用又拍云,则可以使用/ajax/upload
*/ */
'uploadurl' => 'http://v0.api.upyun.com/yourbucketname', 'uploadurl' => '/admin/ajax/upload',
/** /**
* 又拍云或本机的CDN地址 * 又拍云或本机的CDN地址
*/ */
'cdnurl' => 'http://yourbucketname.b0.upaiyun.com', 'cdnurl' => '',
/** /**
* 上传成功后的通知地址 * 上传成功后的通知地址
*/ */
'notifyurl' => 'http://www.yoursite.com/upyun/notify', 'notifyurl' => '',
/** /**
* 又拍云Bucket * 又拍云Bucket
*/ */
'bucket' => 'yourbucketname', 'bucket' => '',
/** /**
* 生成的policy有效时间 * 生成的policy有效时间
*/ */
@ -29,7 +29,7 @@ return [
/** /**
* 文件保存格式 * 文件保存格式
*/ */
'savekey' => '/uploads/media/{year}{mon}{day}/{filemd5}{.suffix}', 'savekey' => '/uploads/{year}{mon}{day}/{filemd5}{.suffix}',
/** /**
* 最大可上传大小 * 最大可上传大小
*/ */

View File

@ -54,9 +54,13 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table', 'config'], function (
}, },
formatter: { formatter: {
thumb: function (value, row, index) { thumb: function (value, row, index) {
console.log(row); //console.log(row);
if (row.mimetype.indexOf("image") > -1) { if (row.mimetype.indexOf("image") > -1) {
return '<a href="' + Config.upload.cdnurl + value + '" target="_blank"><img src="' + Config.upload.cdnurl + value + '!/fwfh/50x50" alt=""></a>'; if (Config.upload.bucket.replace(/^\s+|\s+$/gm,'').length === 0){
return '<a href="' + Config.upload.cdnurl + value + '" target="_blank"><img src="' + Config.upload.cdnurl + value + '" alt="" style="max-height:90px;max-width:120px"></a>';
} else {
return '<a href="' + Config.upload.cdnurl + value + '" target="_blank"><img src="' + Config.upload.cdnurl + value + '!/fwfh/50x50" alt=""></a>';
}
} else { } else {
return '无'; return '无';
} }

View File

@ -69,11 +69,11 @@ define(['jquery', 'bootstrap', 'backend', 'config', 'plupload'], function ($, un
try { try {
var ret = JSON.parse(info.response); var ret = JSON.parse(info.response);
if (ret.hasOwnProperty('code')) { if (ret.hasOwnProperty('code')) {
ret.data = ret.code == 200 ? ret : ret.data; ret.data = ret.code == 200 ? ret.data : ret.data;
ret.code = ret.code == 200 ? 1 : ret.code; ret.code = ret.code == 200 ? 1 : ret.code;
var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : null; var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : null;
var msg = ret.hasOwnProperty("msg") && ret.msg != "" ? ret.msg : ""; var msg = ret.hasOwnProperty("msg") && ret.msg != "" ? ret.msg : "";
$("input[data-plupload-id='" + id + "-text']").val(data.url); $("input[data-plupload-id='" + id + "-text']").val(data);
var afterUpload = $("#" + id).data("after-upload"); var afterUpload = $("#" + id).data("after-upload");
if (afterUpload && typeof Upload.api.custom[afterUpload] == 'function') { if (afterUpload && typeof Upload.api.custom[afterUpload] == 'function') {
Upload.api.custom[afterUpload].call(info, id, data); Upload.api.custom[afterUpload].call(info, id, data);