119 lines
3.6 KiB
PHP
119 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
trait UploadTrait
|
|
{
|
|
public function uploadImage()
|
|
{
|
|
return $this->upload('image');
|
|
}
|
|
|
|
public function uploadFile()
|
|
{
|
|
return $this->upload();
|
|
}
|
|
|
|
/**
|
|
* 富文本内文件上传
|
|
*/
|
|
public function uploadRich()
|
|
{
|
|
$fromWangEditor = false;
|
|
$file = request()->file('file');
|
|
|
|
if (!$file) {
|
|
$fromWangEditor = true;
|
|
$file = request()->file('wangeditor-uploaded-image');
|
|
if (!$file) {
|
|
$file = request()->file('wangeditor-uploaded-video');
|
|
}
|
|
}
|
|
|
|
if (!$file) {
|
|
return $this->response()->additional(['errno' => 1])->fail(__('admin.upload_file_error'));
|
|
}
|
|
|
|
$path = $file->store(Admin::config('admin.upload.directory.rich'), Admin::config('admin.upload.disk'));
|
|
|
|
$link = Storage::disk(Admin::config('admin.upload.disk'))->url($path);
|
|
|
|
if ($fromWangEditor) {
|
|
return $this->response()->additional(['errno' => 0])->success(['url' => $link]);
|
|
}
|
|
|
|
return $this->response()->additional(compact('link'))->success(compact('link'));
|
|
}
|
|
|
|
/**
|
|
* 存放临时文件目录;
|
|
*/
|
|
protected function upload($type = 'file')
|
|
{
|
|
$file = request()->file('file');
|
|
|
|
if (!$file) {
|
|
return $this->response()->fail(__('admin.upload_file_error'));
|
|
}
|
|
|
|
$path = $file->store(Admin::config('admin.upload.tem_directory.' . $type), Admin::config('admin.upload.disk'));
|
|
|
|
return $this->response()->success(['value' => $path]);
|
|
}
|
|
|
|
public function saveImage($field = 'image', $path)
|
|
{
|
|
return $this->saveFile($field, $path);
|
|
}
|
|
|
|
/**
|
|
* 表单提交时,转存实际目录,并保留上传时文件名称;文件保存全路径
|
|
*/
|
|
public function saveFile($field = 'file', $path)
|
|
{
|
|
$file = request()->file($field);
|
|
|
|
if (!$file) {
|
|
$file = request()->get($field);
|
|
}
|
|
|
|
$fileArr = [];
|
|
//判断是否多个文件;
|
|
if(is_string($file) || isset($file['id'])){
|
|
$files = [$file];
|
|
}else{
|
|
$files = $file;
|
|
}
|
|
|
|
if($files){
|
|
foreach($files as $file){
|
|
if(is_array($file) && isset($file['state'])){
|
|
switch($file['state']){
|
|
case 'init':
|
|
if(strpos($file['value'], 'temporary') !== false){
|
|
$filePath = $path.'/'.$file['name'];
|
|
Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath);
|
|
$fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath);
|
|
}else{
|
|
$fileArr[] = $file['value'];
|
|
}
|
|
break;
|
|
case 'uploaded':
|
|
if(isset($file['name'])){
|
|
$filePath = $path.'/'.$file['name'];
|
|
Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath);
|
|
$fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath);
|
|
}
|
|
break;
|
|
}
|
|
}else{
|
|
$fileArr[] = $file;
|
|
}
|
|
}
|
|
}
|
|
return $fileArr;
|
|
}
|
|
} |