??開發(fā)當中文件上傳和下載是必不可少的兩個常用接口,基于TP5的接口如下:
注意點:移動文件是需要絕對路徑,訪問文件時需要相對路徑
單文件file格式上傳
/**
*單文件上傳
*[file] file 上傳文件的字段
*[string] folder 文件保存的子級文件夾
**/
public function SingleUpload(){
// 獲取表單上傳文件
$files = request()->file('file');
if (!is_object($files)) {
CommonFunc::api_error("20000", "參數(shù)錯誤");
}
$category = pathinfo($files->getInfo('name'), PATHINFO_EXTENSION);
$dir_public = 'uploads/'.input('post.folder')."/".$category.'/'.date('Y-m-d', time())."/";
if(!is_dir($dir_public)){
mkdir($dir_public,0777,true);
}
$dir_root = ROOT_PATH ."public" . DS . $dir_public;
$origin = sha1($files->getInfo('name'));
$info = $files->move($dir_root , $origin);
if($info){
$path = "/".$dir_public . $origin .".". $info->getExtension();
}else{
return CommonFunc::api_error("20000" , "操作失敗");
}
CommonFunc::api_export($path);
多文件file[]數(shù)組格式上傳
/**
*多文件上傳
*[array] file[] 上傳文件的字段,注意:數(shù)組形式
*[string] folder 文件保存的子級文件夾
**/
public function MultiUpload(){
// 獲取表單上傳文件[]
$files = request()->file('file');
if (!is_array($files)) {
CommonFunc::api_error("20000", "參數(shù)錯誤");
}
foreach ($files as $value) {
$category = pathinfo($value->getInfo('name'), PATHINFO_EXTENSION);
$dir_public = 'uploads/'.input('post.folder')."/".$category.'/'.date('Y-m-d', time())."/";
if(!is_dir($dir_public)){
mkdir($dir_public,0777,true);
}
$dir_root = ROOT_PATH ."public" . DS . $dir_public;
$origin = sha1($value->getInfo('name'));
$info = $value->move($dir_root , $origin);
if($info){
$path[] = "/".$dir_public . $origin .".". $info->getExtension();
}else{
return CommonFunc::api_error("20000" , "操作失敗");
}
}
$path = implode(',', $path);
CommonFunc::api_export($path);
}
圖片以base64格式上傳
public function fileUpload()
{
// 獲取圖片的base64編碼
$base64_img = trim($this->post['img']);
//圖片路徑
$dir_public = "uploads/images/" . date('Y-m-d', time()) . "/";
$dir_root = ROOT_PATH . "public" . DS . $dir_public;
if(!file_exists($dir_root))
{
mkdir($dir_root);
}
if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result))
{
$type = $result[2];
if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){
$origin = sha1((microtime(true) + rand(1, 10000)) . $this->admin['uid']);
$new_file = $dir_root. $origin. '.' .$type;
if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){
$img_path = "/" . $dir_public . $origin . "." . $type;
}else{
CommonFunc::api_error("20000" , "圖片上傳失??!");
}
}else{
//文件類型錯誤
CommonFunc::api_error("20000" , "文件類型錯誤!");
}
}else{
//文件錯誤
CommonFunc::api_error("20000" , "文件錯誤!");
}
$path = array($img_path);
CommonFunc::api_export([
"list" => $path
]);
}