我正在开发基于laravel +流明的项目。我正在制作主要设置,它将基于Web的Laravel 5.2和子域(api.domain.com)来处理来自移动设备的api请求。用户将从移动应用程序和Web上传大量文件(主要是图像)。它们将存储在不会公开显示的存储文件夹中。但是有两个问题。
答案 0 :(得分:0)
您可以使用特殊路线读取和返回图像。例如一个简单的闭包路线,如下所示:
有两种方法取决于您可以使用以下任何一种文件的隐私。
1)使用专用控制器提供图像:
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;
class FileController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public static function getFile($fileName){
$path = storage_path() . '/' . $filename;
if(File::exists($path)){
return Response::download($path);
}
else
abort(404);
}
}
路线
Route::get('/file/{file_name}','FileController@getFile');
现在,您可以从此网址abc.jpg
中访问名为/file/abc.jpg
的文件
2)使用符号链接
如果您的文件不需要任何身份验证或任何处理,则此方法最适合控制器
在存储目录中的子文件夹和公共目录之间创建符号链接
在linux中,您可以使用以下命令:
ln -s /path_to_storage_directory/file /path_to_public_directory/files
在Windows中使用以下命令:
mklink /j /path_to_storage_directory/file /path_to_public_directory/files
在Windows中,如果您不想使用CMD,则这是一个独立的应用程序来创建符号链接:Symlinker