2017-08-28 144 views
0

我正在研究laravel 4.2项目,我应该上传视频,将它们保存在存储文件夹内,然后在用户可以在页面中显示它们播放这些视频。保存视频的第一部分已完成,但问题在于获取文件。Laravel 4.2,保存和访问存储文件夹内的文件

我到处寻找,不像laravel 5.x,它似乎没有明确的方式来访问存储文件夹和获取文件(即使Storage :: get无法使用)。

作为一个简单的例子来进行测试,我被从存储文件夹内联一个简单的图像开始,仍然犯规干活试图链接函数(刀片)

<img src="{{url('code/app/storage/files/videos/gg.jpg') }}"/> 

它给出了这样的线,当通过浏览器编译:

<img src="http://dr.test/userptl/code/app/storage/files/videos/gg.jpg"/>

路径代码/应用/存储/文件/视频/ gg.jpg是正确的,但仍然无法访问到图像。

storage_path()无法使用,因为它会生成根的完整路径,即不正确。

有没有办法解决这个问题?

+0

PHP工匠存储:链接 这将为您创建从公共/存储到存储/应用程序/公共的符号链接。现在/ storage/app/public中的任何文件都可以通过以下链接访问: http://somedomain.com/storage/gg.jpg – Rakib

回答

0

当您上传文件时,它会存储在临时文件夹中。您必须将其移至可公开访问的文件夹中。 $file = $request->file('file'); \Storage::put($path.'/'.$newFilename, file_get_contents($file));

您可能需要在存储和公共之间有一个符号链接来使这些文件可访问。

0

在情况下,如果你不使用

php artisan storage:link 

添加以下代码到你的路由器:

Route::get('storage/{filename}', function ($filename) 
{ 
    $path = storage_path('public/' . $filename); 

    if (!File::exists($path)) { 
     abort(404); 
    } 

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

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

    return $result; 
}); 

然后在视图中,可以使用这样的:

<img src="{{ asset("storage/gg.jpg")}}"/> 
相关问题