php原生上传件到服务器代码示例Demo(适用Laravel)
适用情景
提示:此Demo也适用Laravel;
例如:例如:网页、接口想PHP发送文件,PHP接收文件存到到服务器自定义目录中;
代码示例
<?php
namespace App\Services;
class UploadFiles
{
public function uploadFileOne($file,$file_dir){
try{
$file_dir = trim(trim($file_dir,'.'),'/') .'/';
if (!is_dir($file_dir)){
$mkdir_file_dir = mkdir($file_dir, 0777,true);
}
$res = [
'code'=>500,
'msg'=>''
];
if(!$file['name']){
$res['msg'] = '请选择需要上传文件';
return $res;
}
if ($file['error'] > 0){
switch ($file['error']){
case 1:
$res['msg'] = "文件大小超过PHP.ini中的文件限制!";
break;
case 2:
$res['msg'] = "文件大小超过了浏览器限制!";
break;
case 3:
$res['msg'] = "文件部分被上传!";
break;
case 4:
$res['msg'] = "没有找到要上传的文件!";
break;
case 5:
$res['msg'] = "服务器临时文件夹丢失,请重新上传!";
break;
case 6:
$res['msg'] = "文件写入到临时文件夹出错!";
break;
}
return $res;
}
$file['name'] = date('YmdHis', time()) . $file['name'];
if (!file_exists($file_dir . $file['name'])) {
$name_arr = explode('.',$file['name']);
$path = $file_dir . time() . rand(100,999) .'.'. end($name_arr);
if(move_uploaded_file($file['tmp_name'], $path)){
$res['code'] = 200;
$res['msg'] = 'success';
$res['url'] = $path;
return $res;
}else{
$res['msg'] = '文件不存在';
return $res;
}
}else{
$res['msg'] = '您上传的文件已经存在';
return $res;
}
}catch (\Exception $exception){
dd($exception->getMessage());
}
}
public function deleteFileOne($path){
if(file_exists($path)){
chmod($path,0777);
if (unlink($path)) {
$res['code'] = 200;
$res['msg'] = 'success';
$res['url'] = $path;
return $res;
} else {
$res['msg'] = '删除失败';
return $res;
}
}else{
$res['msg'] = '文件不存在';
return $res;
}
}
}
效果图1:
效果图2:
总结
上传文件核心就是使用**$_FILES超全局变量获取文件并用move_uploaded_file()函数**将上传的文件移动到服务器指定的目录中。
|