所以我一直在玩heroku,我真的很喜欢。它的速度很快,而且效果很好。但是,我的图库应用程序https://miko-gallery.herokuapp.com遇到了问题。创建一个免费帐户,创建一个相册,然后尝试上传照片。它不会显示。我已经运行了php artisan storage:link
命令,但是它不起作用。我在这里想念什么?
编辑
我刚刚尝试了新事物,我尝试运行heroku run bash
,然后将其CD到storage / app / public文件夹中,但其中不包含应该存在的文件夹images
。 / p>
我保存照片的代码在这里(在本地主机上可用):
public function store(Request $request)
{
$ext = $request->file('items')->getClientOriginalExtension();
$filename = str_random(32).'.'.$ext;
$file = $request->file('items');
$path = Storage::disk('local')->putFileAs('public/images/photos', $file, $filename);
$photo = new Photo();
$photo->album_id = $request->album_id;
$photo->caption = $request->caption;
$photo->extension = $request->file('items')->getClientOriginalExtension();
$photo->path = $path.'.'.$photo->extension;
$photo->mime = $request->file('items')->getMimeType();
$photo->file_name = $filename;
$photo->save();
return response()->json($photo, 200);
}
答案 0 :(得分:0)
如果您没有ssh访问权限,则只需创建一条路由即可,因此只需点击url即可点击此命令
Route::get('/artisan/storage', function() {
$command = 'storage:link';
$result = Artisan::call($command);
return Artisan::output();
})
首先从存储取消链接现有链接
答案 1 :(得分:0)
Heroku的文件系统is dyno-local and ephemeral。您对它所做的任何更改都将在下次每次dyno重新启动时丢失。这种情况经常发生(at least once per day)。
因此,您不能将上载存储在本地文件系统上。 Heroku的official recommendation将使用Amazon S3之类的东西来存储上传内容。 Laravel supports this开箱即用:
由于Frank de Jonge出色的Flysystem PHP软件包,Laravel提供了强大的文件系统抽象。 Laravel Flysystem集成提供了易于使用的驱动程序,用于处理本地文件系统,Amazon S3和Rackspace Cloud Storage。更好的是,在这些存储选项之间切换非常简单,因为每个系统的API都相同。
Simply add league/flysystem-aws-s3-v3 ~1.0
to your dependencies,然后在config/filesystems.php
中进行配置。