Laravel unisharp 文件管理器结合文件和图像管理器

Laravel unisharp file manager combine file and image manager

上周我发现了 Unisharp file manager 插件。 在对插件进行了大量调整后,我设法让插件在我的浏览器中工作而无需打开新页面(就像你应该使用插件一样)

我浏览器的视图:

第一张图片是我上传的图片,第二张图片是我上传的文件。

现在我的问题是我试图将它们都放在一个文件管理器中,这样文件和图像就在一个文件管理器中。

我已尝试将 config/lfm.php、public/photos/ 调整为 public/files/,如下所示

就像文件链接到的位置一样,但是当我这样做时,我之前上传的图像和文件不会加载

因此,如果您对如何将文件和图像管理器组合在一起有任何建议,或者对其他插件有其他建议,那就太好了,

你好,

诺亚

完全披露:我是包维护者,为 UniSharp 工作。

你做的很好! 唯一的问题是,图像有拇指,而文件没有(文件显示图标)。 当获取参数"type"设置为"Image"(link here)时,文件和图像会显示,但文件的缩略图会被破坏。

解决方案:您可以像下面这样设置默认图像,以防文件缩略图损坏。

<img onclick="useFile('{{ $file_name }}')" onError="this.src='/img/default.jpg'">

所以看到评论后@Stream Huang。我设法让它工作,确实图像得到了赞许,而 pdf 之类的文件却没有。

我做的第一件事是 UploadController@Upload 更改

if ('Images' === $this->file_type) {
    $this->makeThumb($dest_path, $new_filename);
}

之后,我创建了一个变量来获取您刚刚上传的文件的 extension/file 名称,并在图像上对其进行过滤。

$fileName = $file->getMimeType();

if ($fileName == "image/jpeg" || $fileName == "image/png") {
    $this->makeThumb($dest_path, $new_filename);
}

ItemController中我添加了一个[$key]到数组

ItemController@getFileInfos(原创)

$file_info[$key] = [
    'name'      => $file_name,
    'size'      => $file_size,
    'created'   => $file_created,
    'type'      => $file_type,
    'icon'      => $icon,
];

至:

$file_info[$key] = [
    'name' => $file_name,
    'size' => $file_size,
    'created' => $file_created,
    'type' => $file_type,
    'icon' => $icon,
    'title' => $file_data[$key]->title,
    'alt' => $file_data[$key]->alt,
    'id' => $file_data[$key]->id,
];

标题,alt和id是从数据库中获取的(当我上传图片时,我首先需要在上传之前输入标题,alt和图像。我拥有的数据存储在数据库中所以我可以将这些数据用于新闻文章)。

我还更改了几个刀片,主要是项目和索引

item.blade.php(原创)

@if($type == 'Images')
    <img id="{{ $file_name }}" src="{{ asset($thumb_src) }}" class="pointer" onclick="useFile('{{ $file_name }}')">
@else
    <i class="fa {{ $file['icon'] }} fa-5x" style="height:200px;cursor:pointer;padding-top:60px;" onclick="useFile('{{    $file_name }}')"></i>
@endif

item.blade.php(编辑)

$file_name = $file_info[$key]['name'];
$filebroken = substr($file_name, -3);
$extension = array_pop($filebroken);

file_info[$key]['name'] 是一个从数据库中获取的文件名,就像 image.jpg 一样,我得到了名称的最后 3 个字符,所以它很可能是 .jpg 或 .png 如果它是图片。

之后我检查 $extension 变量是 jpg 还是 png,否则我将其设为它的图标。

@if($extension == 'png' || $extension == 'jpg')
    <img id="{{ $file_name }}" src="{{ asset($thumb_src) }} class="pointer" onclick="useFile('{{ $file_name }}')">
@else
    <i class="fa {{ $file['icon'] }} fa-5x" onclick="useFile('{{ $file_name }}')"></i>
@endif