当试图从邮递员上传图像时,我发送的图像不会保存在Heroku上的API文件夹中。但是它存储在某个地方,因为当我使用asset()并打开该链接时,该链接将正确显示图像。
该路线用于创建一个产品,该图像对应于该产品:
路由:
Route::post('product/new','ProductController@store');在我的控制器里:
$product = new Product;
$product->name = $request->input('name');
//Other staff
if($request->file('image')){
$path = Storage::disk('public')->put('uploads/images/products',$request->file('image'));
// $product->image = $path;
$product->image = asset($path);
}邮递员配置:

我已经尝试用x-www-form-urlencoded配置内容类型标头,配置内容类型为multipart/form-data,没有任何内容类型,但它们都没有工作。
我得到的结果是:
{
"id": 1,
"name": "test1",
//staff
"image": "http://{{my_API_domain}}/uploads/images/products/Mz9liaazzCOTwt8CdEWK0My6w3l2GWzR1ERDncCV.png",
}如果我从浏览器输入http://{{my_API_domain}}/uploads/images/products/Mz9liaazzCOTwt8CdEWK0My6w3l2GWzR1ERDncCV.png,这个链接很好地显示了图像,但是如果我去那里检查:public/uploads/images/products/没有保存的图像,不知道这些图像存储在哪里。
而且,我确实运行了php artisan storage:link,符号链接文件夹存储在public/中创建得很好,但是只有.gitignore在里面,在config/filesystem.php中我将'public' => [ 'root' => storage_path('app/public'),]更改为'public' => [ 'root' => public_path(),]。
我的档案结构:

发布于 2019-08-29 16:53:18
我不知道您的文件存储在哪里,但更大的问题是您首先要将文件保存到本地文件系统中。即使您知道文件的去向,这也不能像预期的那样工作。
Heroku的文件系统是短暂的。您对其所做的任何更改都将在下次您的dyno重新启动时丢失。这个频繁发生 (每天至少一次)。Heroku 建议在亚马逊S3这样的第三方服务上存储上传的文件。
幸运的是,Laravel 支持这一点。
league/flysystem-aws-s3-v3 ~1.0添加到依赖项中config/filesystems.php中的桶您不需要对上传代码进行任何更改。现在应该自动将文件保存到您的S3桶中,让它们能够生存下来,不需要循环和新的部署。
发布于 2019-08-29 21:48:11
php artisan storage:link变成公共/存储/符号链接到存储/应用程序/公共
你的形象应该是
"http://{{my_API_domain}}/storage/uploads/images/products/Mz9liaazzCOTwt8CdEWK0My6w3l2GWzR1ERDncCV.png"https://stackoverflow.com/questions/57712586
复制相似问题