【发布时间】:2018-11-16 17:08:57
【问题描述】:
我正在使用storage_path 来保存我的图像,并将我的存储文件夹符号化到public_html
php artisan storage:link
在本地一切正常,当我上传图像时,它会上传到存储文件夹中,并且它的链接会出现在public 文件夹中,但是由于我切换到实时主机和生产模式,我的图像将上传到存储文件夹中,但是我的public_html/storage 中没有任何内容,而且我无法将它们放入我的前端。
代码
/config/filesystems.php
'public' => [
'driver' => 'local',
'root' => storage_path('app/public/'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
.env
FILESYSTEM_DRIVER=public
controller sample
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'page' . '-' . time() . '.' . $image->getClientOriginalExtension();
$location = storage_path('app/public/images/' . $filename);
Image::make($image)->resize(1200, 600)->save($location);
if(!empty($page->image)){
Storage::delete('images/' . $page->image);
}
$page->image = $filename;
}
有什么想法吗?
【问题讨论】:
-
您使用的不是
public目录,而是public_html。我不喜欢这种策略。在public_html中创建一个公共目录并将url设置为env('APP_URL').'/public/storage'。 -
你需要在服务器上重新创建符号链接,它不会随之传输
-
@Ohgodwhy 抱歉,但我很困惑,1)
Make a public directory in public_html我的public_html中确实有文件夹,它是在我运行 artisan 命令时创建的,2)我做了'url' => env('APP_URL').'/public/storage',但没有任何改变我无法获取我的图像 -
@ATechGuy 我该怎么做?我的主机中没有终端(不确定!)
-
你确定你应该使用
$image->getClientOriginalExtension();吗?这将允许我在您的服务器上存储一个 .php 文件并执行其中的任何代码。