当前,媒体库允许您上传其中包含空格的文件。 由于多种原因,我想避免这种情况。 我目前的计划是在文件file.media.upload事件中上传文件后重命名该文件。
我通过$ originalPath,以及一个UploadedFile($ newPath)实例
我可以使用来获取原始文件名。
$newPath->getClientOriginalName();
,然后进行消毒。
[更新]
要重命名文件,我使用了MediaLibrary类的moveFile()方法。查看下面的更新代码
Event::listen('media.file.upload', function($widget, $originalPath, $newPath) {
if (strpos($originalPath, ' ') !== false) {
$sanitizedFilePath = str_replace(' ', '-', $originalPath);
MediaLibrary::instance()->moveFile($originalPath, $sanitizedFilePath);
}
});
Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
if (strpos($newPath, ' ') !== false) {
$sanitizedFilePath = str_replace(' ', '-', $newPath);
MediaLibrary::instance()->moveFile($newPath, $sanitizedFilePath);
}
});
Event::listen('media.folder.create', function($widget, $newFolderPath) {
if (strpos($newFolderPath, ' ') !== false) {
$sanitizedFilePath = str_replace(' ', '-', $newFolderPath);
MediaLibrary::instance()->moveFolder($newFolderPath, $sanitizedFilePath);
}
});
Event::listen('media.folder.rename', function($widget, $originalPath, $newPath) {
if (strpos($newPath, ' ') !== false) {
$sanitizedFilePath = str_replace(' ', '-', $newPath);
MediaLibrary::instance()->moveFolder($newPath, $sanitizedFilePath);
}
});
我现在面临的问题是通过Richeditor上传的图像不会返回重命名的文件,它仍在尝试显示具有原始/上传文件名的文件。
我目前使用的一个临时解决方案是隐藏上载选项,并通过扩展Froala选项来禁用将图像粘贴到编辑器中,这使您不得不通过媒体库选择图像。
答案 0 :(得分:0)
是的,我们可以这样做,我们只需要在磁盘上重命名上传的文件,就可以使用MediaLibrary
您为upload
使用了错误的事件语法
真正的一个是: Event :: listen('media.file.upload',function($ widget,$ filePath,$ uploadedFile){}); 您为{{1} }它们都是相同的,但传递给它们的变量是不同的
您可以使用以下代码,将media.file.rename
文件名上传到媒体后,就可以使用该代码
rename
此代码将为您完成工作:)
如有疑问,请发表评论。