我正在做一个 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"/
>
路径代码/应用程序/存储/文件/视频/gg.jpg正确,但仍然无法访问图像。
不能使用 storage_path((,因为它从根生成完整路径,这是不正确的。
有什么办法可以解决这个问题吗?
上传文件时,它会存储在临时文件夹中。 您必须将其移动到可公开访问的文件夹中,例如。
$file = $request->file('file');
Storage::put($path.'/'.$newFilename, file_get_contents($file));
您可能需要在存储和公共之间具有符号链接才能使这些文件可访问。
如果您不使用
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")}}"/>