Скачать ссылки на файлы S3 в Laravel - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь создать небольшое приложение на VueJs в качестве внешнего интерфейса и Laravel в качестве внутреннего, где я загружаю файлы из своего раздела администратора в свой aws-s3 при загрузке файлов, на которых я храню ссылкуэтот файл в базе данных.Каждое действие поддерживается вызовами API, теперь я хочу предоставить возможность этих загрузок моим конечным пользователям, поэтому я делаю вызов Axios примерно так:

downloadPDF(docs){
    const documents = {
        document: docs
    }
    axios.post('api/documents-download', documents, {headers: getHeader()}).then(response => {
        if(response.status === 200)
        {
            console.log('Downloaded')
        }
    })
},

И в моем контроллере у меня естькак то так:

public function download(Request $request)
{
    $headers = [
        'Content-Type' => 'application/pdf',
        'Content-Description' => 'File Transfer',
        'Content-Disposition' => "attachment; filename=filename.pdf",
    ];

    return response()->download($request->document, 'filename.pdf', $headers);
}

но выдает ошибку:

Файл "https://s3 -us-west-2.amazonaws.com / noetic-dev / 2_Project / shiven-available-housing-surat / 3_Document / Form + 1 / Form1.pdf"не существует

Этот файл явно существует и обнародован, как вы можете видеть вышеURL показывает документы как связанные.

Помогите мне с этим.Спасибо

1 Ответ

0 голосов
/ 23 октября 2018

я помню, как это реализовано в моем проекте ... позвольте мне поделиться с вами примером кода ... Laravel уже предоставляет подробности о s3Storage в документации

Код:

use Illuminate\Support\Facades\Response as Download;

public function download_config(Config $config)
    {
        $headers = [
            'Content-Type'        => 'Content-Type: application/zip',
            'Content-Disposition' => 'attachment; filename="'. $config->name .'"',
        ];

        return Download::make(Storage::disk('s3')->get($config->path), Response::HTTP_OK, $headers);
    }

Я полагаю, что вы можете хранить $config->path (путь к файлу) в вашей базе данных.Чтобы узнать больше вы можете посетить этот

...