本文实例为大家分享了TP3.2批量上传文件或图片的具体代码,并解决了同名冲突问题,供大家参考,具体内容如下
1、html
1
2
3
4
5
6
|
< form action = "{:U('Upload/index')}" enctype = "multipart/form-data" method = "post" >
< p >< input type = "file" id = "file3" name = "ID[]" /></ p >
< p >< input type = "file" id = "file4" name = "ID[]" /></ p >
< input type = "submit" value = "上传" />
< p >< img id = "img1" alt = "" src = "/Public/IMAGE/empty_thumb.gif" /></ p >
</ form >
|
2、php
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
34
35
36
37
38
|
public function index(){
if (! empty ( $_FILES )){
$upload = new \Think\Upload(); // 实例化上传类
$upload ->maxSize = 3145728;
$upload ->rootPath = './Uploads/' ;
$upload ->savePath = 'image/' ;
//$upload->saveName = date('YmdHis').'-'.randomkeys(3);//msectime(),毫秒数13位
$upload ->saveName = 'msectime' ; //自定义函数,采用13位毫秒和3位随机数
$upload ->exts = array ( 'jpg' , 'gif' , 'png' , 'jpeg' );
$upload ->autoSub = true;
$upload ->subName = array ( 'date' , 'Ymd' );
/* 判断$_FILES[$key]是否:一维数组,单张图片上传 -xzz0703
* 原理:html的input type = "file" name="IDcard"和name="IDcard[]"的区别:
* $_FILES前者到后台php是二维数组,后者是三维数组
*/
foreach ( $_FILES as $key => $value ){
if ( count ( $_FILES [ $key ]) == count ( $_FILES [ $key ],1)){
$info = $upload ->uploadOne( $_FILES [ $key ]);
if ( $info ){
echo json_encode( array ( 'code' =>200, 'id' => $img_id , 'name' => $img_name )); exit ;
} else {
echo json_encode( array ( 'code' =>0, 'msg' => $upload ->getError())); exit ;
}
}
}
if ( count ( $_FILES )){
$info = $upload ->upload(); //如果是二维数组,使用批量上传文件的方法
if (! $info ){
$this ->error( $upload ->getError());
exit ;
}
$img_url = '/Uploads/' . $info [0][ 'savepath' ]. $info [0][ 'savename' ];
$res = array ( 'imgPath1' => $img_url ,code=> $img_url , 'msg' => $info );
echo json_encode( $res );
}
}
}
|
3、核心:很多朋友在使用TP3.2框架的时候,在saveName属性上面被卡住了,原因就是上传服务器处理级别的百万微秒,很快。
解决:saveName = 13位的毫秒+3位随机数,完美解决,具体代码:
1
2
3
4
5
6
|
//返回当前的毫秒时间戳和随机数合并的字符串
function msectime() {
list( $msec , $sec ) = explode ( ' ' , microtime());
$msectime = (float)sprintf( '%.0f' , ( floatval ( $msec ) + floatval ( $sec )) * 1000).randomkeys(3);
return $msectime ;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。