//磁盘配置 默认是local磁盘 (config/filesystems.php文件)
//配置好root目录
使用laravel自带文件上传功能 会直接将文件(图片)存入 public/storage/images 文件,前端用的layui富文本编辑器,所以返回一个json格式
//laravel自带的文件上传功能 只要设置磁盘驱动即可
//store()函数为文件路径,如果没有则会自动创建
//在本控制器要引入
//use Illuminate\Support\Facades\Storage;
//use Illuminate\Http\Request;
public function img(Request $request)
{
$path = $request->file('file')->store('images');
$data = array(
'code' => 0,
'msg' => '上传成功',
'data' => array(
'src' => "/storage/".$path,
'title' => '图片标题',
),
);
return json_encode($data);
}
用另一种方法
但是这种方法存储到哪个目录,我还没找到,所以当时用的第一种方法
public function img(Request $request){
$file_name = $_FILES['file']['name'];
//$file_type = $_FILES["file"]["type"];
$file_tmp = $_FILES["file"]["tmp_name"];
$file_error = $_FILES["file"]["error"];
$file_size = $_FILES["file"]["size"];
if ($file_error > 0) { // 出错
$message = $file_error;
}elseif($file_size > 5048576){ //大概5M
$message = "上传文件不能大于5MB";
}else{
$date = date('Ymd');
$file_name_arr = explode('.', $file_name);
$new_file_name = date('YmdHis') . '_' . mt_rand(1000,9999) . '.' . $file_name_arr[1];
$path = "upload";
$file_path = $path . $new_file_name;
if (file_exists($file_path)) {
$message = "此文件已经存在";
}else{
//这句不管用
// if (!is_dir($path)){Storage::makeDirectory($path);}
$upload_result = move_uploaded_file($file_tmp, $file_path);
//此函数只支持 HTTP POST 上传的文件
if ($upload_result) {
$status = 1;
$message = $file_path;
} else {
$message = "文件上传失败,请稍后再尝试";
}
}
}
return $file_path;
}