对我来说,问题就是这样解决的,
我创建了一个名为 uploads 的目录,比 laravel 根目录高一级。
之后在config/filesystem.php 中添加了这段代码:
'links' => [
public_path('storage') => storage_path('app/public'),
public_path('storage2') => __DIR__ . '/../../uploads',
],
还有,
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'public2' => [
'driver' => 'local',
'root' => __DIR__ . '/../../uploads',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
],
最后在终端输入php artisan storage:link。
其实它的作用是在public目录下创建了一个名为storage2的目录,这个目录会指向在laravel根目录之外创建的uploads文件夹。
请注意,这行代码创建了uploads 目录,之后所有图像都将存储在该位置。
'public2' => [
'driver' => 'local',
'root' => __DIR__ . '/../../uploads',
'visibility' => 'public',
],
为了将上传的图片存储在创建的uploads 目录中,我使用了以下代码:
if ($request->hasFile('cover')) {
$filenameWithExt = $request->file('cover')->getClientOriginalName ();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $request->file('cover')->getClientOriginalExtension();
$fileNameToStore = $filename . '_' . uniqid() . '.' . $extension;
$path = $request->file('cover')->storeAs('/image/blog', $fileNameToStore, 'public2');
}
并用于显示此图像(在刀片文件中):
<td><img src="{{asset('/storage2/image/blog/' . $post->cover)}}" width="50" height="50"></td>