dcat admin中实现多文件上传功能流程步骤
Laravel  /  管理员 发布于 1年前   648
在dcat admin中实现表单多附件管理的(附件名和保存文件名分开保存)
可以使用上传文件管理解决方案
进入步骤:
首先是新建上传文件表
Schema::create('uploads', function (Blueprint $table) {
$table->string('disk', 30)->comment('存储位置');
$table->string('type', 20)->default('file')->comment('文件类型');
$table->string('name', 150)->nullable()->comment('文件名称');
$table->string('path', 150)->comment('文件路径');
});
新建上传文件用的路由
$router->any('/upload/handle/{disk}/{dir}', 'UploadController@handle');
上传处理
public function handle($diskName, $dir) {
$disk =$this->disk($diskName);
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
Upload::where('path', request()->key)->delete();
// 删除文件并响应
return $this->deleteFileAndResponse($disk);
}
// 获取上传的文件
$file = $this->file();
$newName = Common::uniqueID().'.'.$file->getClientOriginalExtension();
$result = $disk->putFileAs($dir, $file, $newName);
$path = "{$dir}/$newName";
$upload = new Upload;
$upload->name = request()->name;
$upload->path = $path;
$upload->disk = $diskName;
$upload->save();
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
扩展字段
class CustomMultiFile extends MultipleFile
{
protected function initialPreviewConfig()
{
$previews = [];
foreach ($this->value() as $path => $name) {
$previews[] = [
'id' => $path,
'path' => Helper::basename($name),
'url' => $this->objectUrl($path),
];
}
return $previews;
}
}
注册扩展字段
Form::extend('customMultiFile', CustomMultiFile::class);
表单字段
$form->customMultiFile('attachment', '附件')->disk('public')
->url('upload/handle/public/attachment')
->autoUpload()->autoSave(false)
->removable(true)->limit(10);
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号