后台用的INSPINIA框架的模板,里面有,dropzone.js
dropzone是一个可以拖文件上传的js.
拖进去,就上传了。我在页面上,写了一个保存已经上传的文件的image3,image4.
这就需要改写一下dropzone.js.
代码如下:
前端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<div
class
=
"ibox-content"
>
<p>
<strong>組圖上傳</strong>
</p>
<form action=
"#"
class
=
"dropzone"
id=
"dropzoneForm"
>
<div
class
=
"fallback"
>
<input name=
"file"
type=
"file"
multiple />
</div>
</form>
</div>
<div
class
=
"form-group"
><label
class
=
"col-sm-2 control-label"
>組圖</label>
<div
class
=
"col-sm-9"
>
<input name=
"pictureurls"
type=
"text"
class
=
"form-control"
id=
"image3"
value=
"{$info.pictureurls|default=''}"
/>
<input type=
"text"
class
=
"form-control hidden"
id=
"image4"
/>
<span
class
=
"help-block"
>上傳成功的文件已自動保存於服務器,進入附件管理可編輯和刪除。組圖url框只針對此篇內容包含的組圖。</span>
</div>
<div
class
=
"col-sm-1"
><span
class
=
"btn btn-default btn-xs"
id=
"delpic34"
>清空</span></div>
</div>
|
1
2
3
4
5
6
7
8
|
<
script
>
Dropzone.options.dropzoneForm = {
url:"{:url('admin/picture/dz_upload')}",
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 2, // MB
dictDefaultMessage: "<
strong
>拖動文件或點擊上傳</
strong
></
br
>"
};
</
script
>
|
在dropzone.js里
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
// 这里加上res
success:
function
(file,res) {
// console.log(typeof(res));
res = JSON.parse(res);
// console.log(res['filename']);
if
(res[
'filename'
]){
// add by zy
var
hasfilename3 = $(
'#image3'
).val();
var
hasfilename4 = $(
'#image4'
).val();
if
(hasfilename3){
var
newfilename3 = hasfilename3+
','
+res.name;
}
else
{
var
newfilename3 = res.name;
}
if
(hasfilename4){
var
newfilename4 = hasfilename4+
','
+res.filename;
}
else
{
var
newfilename4 = res.filename;
}
$(
'#image3'
).val(newfilename3);
$(
'#image4'
).val(newfilename4);
// 增加两个框,id
}
if
(file.previewElement) {
return
file.previewElement.classList.add(
"dz-success"
);
}
},
|
后端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// 多圖上傳 3-1 dropzone.js
public
function
dz_upload()
{
// 獲取表單上傳文件
$files
= request()->file(
''
);
foreach
(
$files
as
$file
){
// 移動到框架應用根目錄/public/uploads/ 目錄下
// 下面move()中去掉参数,''就会改名,加上,''就使用原文件名。
$info
=
$file
->move(ROOT_PATH .
'public'
. DS .
'uploads'
.
$this
->image_dir. DS,
''
);
if
(
$info
){
// 輸出 42a79759f284b767dfcb2a0197904287.jpg
$filename
=
$info
->getInfo(
$name
=
'name'
);
// 原文件名
$savename
=
$info
->getSavename();
$path
[
'filename'
] =
$filename
;
$path
[
'name'
] = DS .
'uploads/'
.
$this
->image_dir. DS .
$savename
;
// 保存文件到數據庫 附件表
$pathname
=
$path
[
'name'
];
$attachment
= model(
'Attachment'
);
$attachment
-> saveattachment(
$info
,
$filename
,
$pathname
);
// 返回需要的信息
echo
json_encode(
$path
);
}
else
{
// 上傳失敗獲取錯誤信息
return
$this
->error(
$file
->getError()) ;
}
}
}
|
上面的:saveattachment,是另一个方法,写在model里的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 文件保存到數據庫附件表
public
function
saveattachment(
$info
,
$filename
,
$pathname
){
$data
=
array
(
'module'
=> Request::instance()->controller(),
// 控制器名
'filename'
=>
$filename
,
// 原文件名
'filepath'
=>
$pathname
,
// 上傳後的新文件名
'filesize'
=>
$info
->getInfo(
$name
=
'size'
),
// 文件大小
'fileext'
=> get_extension(
$filename
),
// 文件擴展名
'isimage'
=>
$info
->getInfo(
$name
=
'key'
)==
'image'
?1:0,
// 是否為圖片文件
'create_time'
=> time(),
// 上傳時間
'uploadip'
=> get_client_ip(),
// 上傳ip
'authcode'
=> uniqid(),
// 唯壹碼
'create_uid'
=> Session::get(
'uid'
),
// 上傳文件的用戶id
'siteid'
=> 1,
// 站點id,備用
);
$attachment
= model(
'Attachment'
);
$attachment
-> save(
$data
);
}
|
attachment表结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
CREATE TABLE `hk_attachment` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`module` char(15) NOT NULL,
`cate_id` smallint(5) unsigned NOT NULL DEFAULT
'0'
,
`filename` char(50) NOT NULL,
`filepath` char(200) NOT NULL,
`
filesize
` int(10) unsigned NOT NULL DEFAULT
'0'
,
`fileext` char(10) NOT NULL,
`isimage` tinyint(1) unsigned NOT NULL DEFAULT
'0'
,
`isthumb` tinyint(1) unsigned NOT NULL DEFAULT
'0'
,
`downloads` mediumint(8) unsigned NOT NULL DEFAULT
'0'
,
`userid` mediumint(8) unsigned NOT NULL DEFAULT
'0'
,
`create_time` int(10) unsigned NOT NULL DEFAULT
'0'
,
`uploadip` char(15) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT
'0'
,
`authcode` char(32) NOT NULL,
`siteid` smallint(5) unsigned NOT NULL DEFAULT
'0'
,
`desc` varchar(255) DEFAULT NULL COMMENT
'图片简介'
,
`pic_tag` varchar(255) DEFAULT NULL,
`author` varchar(20) DEFAULT NULL,
`size` varchar(30) DEFAULT NULL,
`we_status` int(11) DEFAULT
'0'
,
`title` varchar(30) DEFAULT NULL,
`update_uid` int(10) DEFAULT NULL,
`create_uid` int(10) DEFAULT NULL,
`click` int(10) DEFAULT
'1'
,
`mobao` varchar(255) DEFAULT NULL,
`authority` tinyint(1) DEFAULT
'1'
,
`update_time` int(10) DEFAULT NULL,
`from_num` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `authcode` (`authcode`)
) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=utf8;
|
---------- 招募未来大神 -----------------------
如果您有利他之心,乐于帮助他人,乐于分享
如果您遇到php问题,百度且问了其他群之后仍没得到解答
欢迎加入,PHP技术问答群,QQ群:292626152
教学相长!帮助他人,自己也会得到提升!
为了珍惜每个人的宝贵时间,请大家不要闲聊。
愿我们互相帮助,共同成长!
加入时留言暗号,php,ajax,thinkphp,yii...
本文转自phpervip 51CTO博客,原文链接:http://blog.51cto.com/phpervip/1930382
,如需转载请自行联系原作者