2017-02-09 4 views
0

У меня есть Laravel 5.3 с локальной файловой системой. APP_URL в моем .env является:Laravel 5.3 местный путь хранения

http://localhost/myapp 

Я связала хранения общественного

php artisan storage:link 

У меня есть изображение в:

myapp/storage/app/public/defaults/test/file.png 

В базе данных путь сохраняется, как это :

public/defaults/test/file.png 

Так что в моем клинке .php я пытаюсь получить доступ изображения

<img src="{{ Storage::url($user->test)}}" width="" alt=""> 

Но изображение не отображается и URL этого изображения:

http://localhost/storage/defaults/test/file.png 

так, почему он игнорирует APP_URL? и даже если я изменю ссылку на это:

http://localhost/myapp/storage/defaults/test/file.png 

изображение не отображается.

Как получить доступ к изображению в myapp/storage/app/public/defaults/test/file.png с Storage :: url?

BR

ответ

2

Попробуйте это:

1) Огнь php artisan storage:link команда, если вы еще не

2) в базе данных магазина путь относительно корня /общественный каталог с префиксом хранения.

Так что если у вас есть изображение в корень/Public/дефолтов/тест/file.png, то в базе данных, хранить этот путь: хранение/по умолчанию/тест/file.png

3) И, наконец, в просмотрите, как показано на рисунке:

<img src="{{ asset($user->test)}}" width="" alt=""> 

Убедитесь, что $ user-> test имеет значение storage/defaults/test/file.PNG

ИЛИ

3) Если вы не хотите хранить системой хранения префикс в базу данных, а затем хранить путь, как:

по умолчанию/тест/file.png

и с точки зрения:

<img src="{{ asset('storage/' . $user->test)}}" width="" alt=""> 

Примечание: Протестировано с Laravel 5.4, но довольно уверенно, что он будет работать и для Laravel 5.3.


Вот полный демо, что я создал, который иллюстрирует загрузку изображения и отображения:

https://github.com/xparthx/laravel5.4-image-upload

+0

Я связала хранение и в моей БД: хранение/по умолчанию/тест/file.png физический файл находится здесь: root/storage/app/public/defaults/test/file.png, и я показываю изображение как ' 'все хорошо. Но если Я загружаю новый файл с помощью: ''image' => $ r-> image-> store ('storage/defaults/test')' - DB корректен, но файл сохраняется здесь: root/st orage/app/storage/defaults/test/file.png, поэтому изображение не отображается, потому что оно находится в неправильной папке. Как изменить путь загрузки, но не путь db? Или почему это неправильно? – blubbering

+0

Попробуйте загрузить вот так: 'image' => $ r-> image-> store ('defaults/test') –

+1

@blubbering, вот полная демонстрация, которую я создал, которая иллюстрирует загрузку и отображение изображений: https: //github.com/xparthx/laravel5.4-image-upload –

0

, если вы хотите получить доступ к файлу в папке хранения необходимо создать маршрут для этой ссылки

Route::get('storage/defaults/test/{filename}', function ($filename) 
{ 
    $imagePath = storage_path() . '/defaults/test/' . $filename; 

    if(!File::exists($imagePath)) { 
     //Not have file do something here 
    }; 

    $file = File::get($imagePath); 
    $type = File::mimeType($path); 

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

    return $response; 
}); 

теперь вы можете получить доступ к вашей ссылке

У вас есть еще один способ, такие как сохранить свое изображение в [вашем проекте]/public/images/таким образом вы можете получить доступ к своему изображению на http://localhost/images/file.png (нет необходимости создавать маршрут)

Bu т я предлагаю ваши создать новую папку вы например, сервер/данные/изображений и установить виртуальный хост в апаче для позволить тракту

Alias /images /var/www/data/images 

<Directory /var/www/data/images> 
    IndexOptions FancyIndexing FoldersFirst 
    Options MultiViews Indexes 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 

Надеется, что это поможет

Смежные вопросы