DCatAdmin的文件上传组件,如何能展示原名并下载?
问题描述
文件上传以(多文件同理),使用了->uniqueName()来避免重名和文件名乱码,同时我另存了文件的原名;
在展示的时候,我想展示原名,翻了文档可以用->customFormat()方法,但是问题来了,我使用->downloadable()下载文件,只有展示成文件的真正名字,才能正确下载下来,用了customFormat()方法,下载就404,折腾好久了,求个大佬指点迷津 T-T
$form->hidden(‘file_name’);
$form->file(‘file_url’, ‘起诉状文件’)
->customFormat(function ()
{
//如果展示了原名,下载的文件就不对
return $this->file_name;
})
->accept(‘pdf’)
->uniqueName()
->downloadable()
->on(‘uploadSuccess’, <<<JS
function (file,res) { if(res.status){
$(‘input[name=file_name]’).val(file.name);
} }
JS );
期望结果
能展示原名,能成功下载,下载后的文件名还得是原名



关于 LearnKu
给出单个文件上传的解决方法:
只能修改dcat-admin扩展包实现。1.vendor/dcat/laravel-admin/src/Form/Field.php
注释掉原来的函数
2. vendor/dcat/laravel-admin/src/Form/Field/File.php
添加新的函数,获了自义定的标题。然后把值传给js文件。
修改函数
3 修改js文件
文件位置:public/vendor/dcat-admin/dcat/extra/upload.js
serverUrl:t.preview[e].url去查找,找到如图中的代码:找到后,添加一项新的值:serverTitle:t.preview[e].titlefeather icon-check text-white icon-success text-white去查找,找到如图中的代码。把它改成serverTitle.最终效果截图
优化说明
如果不使用
customFormat(),也不会报错,会使用原始值。做到兼容。如果是多个文件上传,有追加,有删除。优化起来就比较复杂了。有任何疑问可以加我微信(Q3664839),可以给予指导如何修改。