TP5单文件多文件上传
Posted Silvia.sun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP5单文件多文件上传相关的知识,希望对你有一定的参考价值。
文件上传可以直接引用框架自定义的文件上传类 use think\\File;
这里封装一个文件上传的model,以便重复利用 UploadFiles.php
1、控制器层
use app\\admin\\model\\UploadFiles; // 使用文件上传model
2、model层
<?php
namespace app\\admin\\model;
use think\\Model; // 使用Model
use think\\File; // 使用文件上传类
use think\\Validate; // 使用文件上传验证
use think\\Request; // 接值时使用
/**
* 封装文件上传model
*/
class UploadFiles extends Model
{
/**
* 单文件上传
* @param [type] $file [description]
* @return [type] string [description]
*/
public function uploadOne($file){
$filePath = ROOT_PATH . \'public\' . DS . \'uploads\'; // 项目物理路径
$rootPath = Request::instance()->root(true); // 项目根路径
if (!file_exists($filePath)) {
mkdir($filePath);
}else{
$info = $file
->validate([
\'size\'=>156780,
\'ext\'=>\'jpg,png,gif\'
])
->move($filePath);
if($info){
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
return $rootPath."/uploads/".$info->getSaveName(); // 返回带域名的图片路径
// 输出 42a79759f284b767dfcb2a0197904287.jpg
// return $info->getFilename();
}else{
return $file->getError();
}
}
}
/**
* 多文件上传
* @param [type] $files [description]
* @return [type] array [description]
*/
public function uploadAll($files)
{
$filePath = ROOT_PATH . \'public\' . DS . \'uploads\'; // 项目物理路径
$rootPath = Request::instance()->root(true); // 项目根路径
$array = array();
foreach ($files as $key => $file) {
if (!file_exists($filePath)) {
mkdir($filePath);
}else{
$info = $file
->validate([
\'size\'=>156780,
\'ext\'=>\'jpg,png,gif\'
])
->move($filePath);
if($info){
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
$imgPath = $rootPath."/uploads/".$info->getSaveName(); // 返回带域名的图片路径
array_push($array,$imgPath);
// 输出 42a79759f284b767dfcb2a0197904287.jpg
// return $info->getFilename();
}else{
return $file->getError();
}
}
}
return $array;
}
}
以上是关于TP5单文件多文件上传的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC单文件上传多文件上传文件列表显示文件下载(转)