处理图片文件上传问题

mall
vine_liutk 2023-12-21 18:15:59 +08:00
parent 64ff120a9e
commit 0168489311
7 changed files with 34 additions and 17 deletions

View File

@ -34,7 +34,9 @@ class AdController extends AdminController
amis()->TableColumn('address', __('admin.ads.address'))->type('mapping') amis()->TableColumn('address', __('admin.ads.address'))->type('mapping')
->map(Keyword::allChildrenOfKey('banner_address')->pluck('name', 'key')->toArray()) ->map(Keyword::allChildrenOfKey('banner_address')->pluck('name', 'key')->toArray())
->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')), ->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')),
amis()->TableColumn('sort', __('admin.ads.sort')), amis()->TableColumn('sort', __('admin.ads.sort'))->quickEdit(
amis()->NumberControl()->min(0)->saveImmediately(true)
),
amis()->TableColumn('resource', __('admin.ads.resource'))->type('image')->height('50px')->width('150px')->enlargeAble(true), amis()->TableColumn('resource', __('admin.ads.resource'))->type('image')->height('50px')->width('150px')->enlargeAble(true),
amis()->TableColumn('remark', __('admin.ads.remark')), amis()->TableColumn('remark', __('admin.ads.remark')),
amis()->TableColumn('published_at', __('admin.ads.published_at'))->remark(__('admin.ads.published_at_remark')), amis()->TableColumn('published_at', __('admin.ads.published_at'))->remark(__('admin.ads.published_at_remark')),

View File

@ -26,7 +26,7 @@ class Storage implements CastsAttributes
*/ */
public function get($model, $key, $value, $attributes) public function get($model, $key, $value, $attributes)
{ {
return $value ? (Str::startsWith($value, ['http://', 'https://']) ? $value : StorageFacades::disk(Admin::config('admin.upload.disk'))->url($value)).'?time='.time() : ''; return $value ? (Str::startsWith($value, ['http://', 'https://']) ? $value : StorageFacades::disk(Admin::config('admin.upload.disk'))->url($value)) : '';
} }
/** /**

View File

@ -27,7 +27,6 @@ class Ad extends Model
'updated_at' => 'datetime', 'updated_at' => 'datetime',
'published_at' => 'datetime', 'published_at' => 'datetime',
'is_enable' => 'boolean', 'is_enable' => 'boolean',
'resource' => Storage::class,
'jump_config' => 'array', 'jump_config' => 'array',
]; ];

View File

@ -26,7 +26,6 @@ class Article extends Model
'published_at' => 'datetime:Y-m-d H:i:s', 'published_at' => 'datetime:Y-m-d H:i:s',
'is_enable' => 'boolean', 'is_enable' => 'boolean',
'is_recommend' => 'boolean', 'is_recommend' => 'boolean',
'cover' => Storage::class,
'appendixes' => 'array', 'appendixes' => 'array',
]; ];

View File

@ -32,7 +32,9 @@ class AdService extends BaseService
$data['published_at'] = now(); $data['published_at'] = now();
} }
if(isset($data['resource'])){
$data['resource'] = $this->saveImage('resource', 'ads/resource')[0]; $data['resource'] = $this->saveImage('resource', 'ads/resource')[0];
}
//处理跳转配置 //处理跳转配置
$jumpType = Arr::get($data, 'jump_type'); $jumpType = Arr::get($data, 'jump_type');

View File

@ -57,6 +57,7 @@ class ArticleService extends BaseService
if ($isEnable && empty($publishedAt) && empty($model->published_at)) { if ($isEnable && empty($publishedAt) && empty($model->published_at)) {
$data['published_at'] = now(); $data['published_at'] = now();
} }
if(isset($data['cover'])){ if(isset($data['cover'])){
$data['cover'] = $this->saveImage('cover', 'articles/cover')[0]; $data['cover'] = $this->saveImage('cover', 'articles/cover')[0];
} }

View File

@ -70,7 +70,7 @@ trait UploadTrait
} }
/** /**
* 表单提交时,转存实际目录,并保留上传时文件名称; * 表单提交时,转存实际目录,并保留上传时文件名称;文件保存全路径
*/ */
public function saveFile($field = 'file', $path) public function saveFile($field = 'file', $path)
{ {
@ -82,24 +82,38 @@ trait UploadTrait
$fileArr = []; $fileArr = [];
//判断是否多个文件; //判断是否多个文件;
if(isset($file['name'])){ if(is_string($file) || isset($file['id'])){
$files = [$file]; $files = [$file];
}else{ }else{
$files =$file; $files = $file;
} }
if($files){
foreach($files as $file){ foreach($files as $file){
if(is_array($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'])){ if(isset($file['name'])){
$filePath = $path.'/'.$file['name']; $filePath = $path.'/'.$file['name'];
Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath); Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath);
$fileArr[] = $filePath; $fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath);
}
break;
} }
}else{ }else{
$fileArr[] = $file; $fileArr[] = $file;
} }
} }
}
return $fileArr; return $fileArr;
} }
} }