我正在开发一个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()不能使用,因为它从根生成完整路径,这是不正确的。
有什么方法可以解决这个问题吗?
答案 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")}}"/>