Загруженный файл не может быть открыт при нажатии на ссылку

#php #laravel #file

#php #laravel #файл

Вопрос:

                                  {{ trans('cruds.ticket.fields.attachments') }}
                            
                            <td>
                                @foreach($ticket->attachments as $attachment)
                               <a href="{{ $attachment->getUrl() }}">{{ $attachment->file_name }}</a>
                                @endforeach
                            </td>
                        
  

При нажатии на ссылку отображается ошибка, подобная этой…

Объект не найден! Запрошенный URL не был найден на этом сервере. Ссылка на ссылающейся странице кажется неверной или устаревшей. Пожалуйста, сообщите автору этой страницы об ошибке.

Если вы считаете, что это ошибка сервера, пожалуйста, свяжитесь с веб-мастером.

Ошибка 404 localhost Apache /2.4.43 (Win64) OpenSSL /1.1.1g PHP / 7.4.5

Комментарии:

1. Привет, возможно, распечатать ссылку? Возможно, вам потребуется настроить Apache для обслуживания файлов в этом каталоге или иметь скрипт загрузки файлов.

Ответ №1:

фреймворк laravel имеет хороший механизм хранения.

И, увидев ваш код, я предполагаю, что $attachment->getUrl() должно быть возвращено что-то вроде: localhost/abc.img и это не соответствует ни одному ресурсу, управляемому сервером apache.

итак. давайте изменим ссылку, на которую $attachment->getUrl() возвращается localhost/files/abc.img , и создадим маршруты для этой ссылки, например:

 Route::get('files/{filename}', function ($filename)
{
    $file = Storage::get('files/'.$filename);
    $type = $mimetype = Storage::mimeType('product_image/'.$filename);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});