Laravel 4.2,保存和访问存储文件夹中的文件

时间:2017-08-28 16:16:42

标签: laravel video laravel-4 html5-video storage

我正在开发一个laravel 4.2项目,我应该上传视频,将它们保存在存储文件夹中,然后将它们显示在用户可以播放这些视频的页面中。保存视频的一部分已经完成,但问题是获取文件。

我到处寻找,与laravel 5.x不同,似乎没有明确的方法来访问存储文件夹并获取文件(甚至无法使用Storage :: get)。

作为一个简单的测试示例,我首先从存储文件夹中链接一个简单的图像,但仍然无法工作。我尝试了url函数(刀片)

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

它在浏览器编译时给出了这一行:

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

路径代码/ app / storage / files / videos / gg.jpg是正确的,但仍然无法访问该图像。

storage_path()不能使用,因为它从根生成完整路径,这是不正确的。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

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

您可能需要在存储和公共之间建立符号链接才能使这些文件可访问。

答案 1 :(得分: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")}}"/>