Неправильный путь при загрузке в Backpack CRUD view - PullRequest
0 голосов
/ 15 мая 2018

Я добавил поле загрузки в мой CRUD-контроллер.Загрузка работает нормально, и файл загружается в мой каталог / storage / private.

Вот файл filesystems.php:

    'private' => [
        'driver' => 'local',
        'root' => storage_path('private')
    ],

Вот мои пользовательские функции в модели File.php:

public static function boot()
{
    parent::boot();
    static::deleting(function($file) {
        \Storage::disk('private')->delete($file->file);
    });
}

public function setFileAttribute($value)
{
    $attribute_name = "file";
    $disk = "private";
    $destination_path = "";
    // Cifratura del file
    file_put_contents($value->getRealPath(), file_get_contents($value->getRealPath()));
    $this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
}

А вот мой код FileCRUDController.php:

    $this->crud->addField(
    [   // Upload
        'name' => 'file',
        'label' => 'File to upload',
        'type' => 'upload',
        'upload' => true,
        'disk' => 'private'
    ]);

Однако, когда я пытаюсь загрузить файл, он пытается извлечь его из http://localhost:8000/storage/myfile.png вместоhttp://localhost:8000/storage/private/myfile.png

Что я делаю не так?Большое спасибо.

Я также хотел бы знать, есть ли способ подключить пользовательскую функцию вместо загрузки файла непосредственно из представления CRUD.Мои файлы зашифрованы, и мне нужен контроллер, который заботится о расшифровке перед отправкой файлов пользователю.

1 Ответ

0 голосов
/ 16 мая 2018

Метод url () по-прежнему недоступен для файлов, помещаемых в подкаталоги.

Вы также можете использовать функцию storage_path для генерации полного пути к указанному файлу относительно каталога хранения:

$app_path = storage_path('app');
$file_path = storage_path('app/file.txt');

В связи с выпуском # 13610

Для версии 5.3 работает:

'my-disk' => [
    'driver' => 'local',
    'root'   => storage_path(),
    'url'    => '/storage'
],

\Storage::disk('my-disk')->url('private/myfile.png')

this should return "/storage/private/myfile.png"
...