Нет такого файла, Хранение файла в локальном хранилище не работает на производстве - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть приложение laravel, развернутое на Elasticbeanstalk, я работаю над функцией, где мне нужно получить zip-файл из корзины s3, сохранить его в локальном хранилище, чтобы иметь возможность использовать laravel - почтовый индекс, чтобы удалить файл PDF из этого почтового индекса. код работает локально, но я получаю «Нет такой ошибки файла» после тестирования на производстве:

// get the file from s3 and store it into local storage
$contents  = Storage::disk('s3')->get($file_name);
$zip_local_name =  'my_file.zip';
Storage::disk('local')->put($zip_local_name, $contents);

// use laravel-zip to remove the unwanted pdf file from the result
$manager = new ZipManager();
$file_path = storage_path('app').'\\'.$zip_local_name; // register existing zips
$manager->addZip(Zip::open($file_path));
$zip = $manager->getZip(0);
$zip->delete($data["Iso_Bus"]["field_name"].'.pdf');
$zip->close();

Я убедился, что файл существует на s3, поэтому я думаю, что моя главная проблема заключается в том, что файл не хранится в локальном хранилище. Любая помощь приветствуется

Редактировать Конфигурации файловых систем:

'disks' => [

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

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',                              
            'key' => '***',
            'secret' => '***',
            'region' => '***',
            'bucket' => '****',
            'url' => '****',
        ],

    ],

1 Ответ

1 голос
/ 17 февраля 2020

Вы неверно получаете полный путь к файлу, попробуйте вместо этого:

$file_path = Storage::disk('local')->path($zip_local_name);

Примечание. Перед продолжением лучше проверить, был ли Storage::put успешным:

// get the file from s3 and store it into local storage
$contents  = Storage::disk('s3')->get($file_name);
$zip_local_name =  'my_file.zip';

if (Storage::disk('local')->put($zip_local_name, $contents)) {
    // `Storage::put` returns `true` on success, `false` on failure.
    // use laravel-zip to remove the unwanted pdf file from the result
    $manager = new ZipManager();
    $file_path = $file_path = Storage::disk('local')->path($zip_local_name);
    $manager->addZip(Zip::open($file_path));
    $zip = $manager->getZip(0);
    $zip->delete($data["Iso_Bus"]["field_name"].'.pdf');
    $zip->close();
}
...