【问题标题】:The "" file does not exist or is not readable“”文件不存在或不可读
【发布时间】:2021-01-25 10:28:38
【问题描述】:

我在尝试在 Laravel 的后端上传多张图片时遇到了一些问题。我有一个带有输入字段和多个属性的简单表单,应该在数据库中上传一组图像,但无论我尝试什么,我都会收到相同的错误““文件不存在或不可读”。我检查了输入字段中的名称,它们与 file() 方法中的名称相同。任何帮助表示赞赏。

PS:我是 Laravel 和 PHP 的新手...

产品控制器:

foreach($request->file('images')->store('images') as $images) {
            $product->images()->create([
                'images' => $images
            ]);
        }

刀片文件:

<form method="POST" enctype="multipart/form-data">
  @csrf

  <h5>Upload Multiple Images</h5>
  <input type="file" multiple name="images" id="images"> Upload Images
</form

【问题讨论】:

  • 一方面缺少表单操作。您是否使用相同的路线来获取和发布?也就是说,您从哪里加载刀片文件?例如,如果您从 create 方法加载视图,然后想通过 store 方法上传表单,则需要通过 post 包含指向 store 路由的表单操作。
  • 添加 action 属性没有帮助。不,我有一个带有 create 方法的 GET 路由和一个带有 store 方法的 Post 路由。
  • 嘿,感谢您的帮助,但我得到了它的工作感谢 Vikas Katariya 在下面的帖子。我实际上在我的商店方法上使用了重定向,这可以解决问题.. 不知道这样做是否可以,因为我想在创建产品时将管理员重定向到产品详细信息页面。当您创建产品时,您还没有 ID,因此我无法将 action 属性用于 'admin/product/ 。 $product->id

标签: laravel


【解决方案1】:

试试..

$input = $request->all();
$datas = [];
if ($request->hasfile('images')) {
foreach ($request->file('images') as $key => $file) {
        $name = $file->getClientOriginalName();
         $file->move(public_path() . '/your path /', $name); //if you want to store image in yopur folder
         $datas[$key] = $name;
         $file = new YourMOdelNAme();
        foreach ($datas as $data) {
           $file->images = $data;
            $file->save();
                }
            }
        }

【讨论】:

  • 请放弃这个答案。谢谢@user12408466
【解决方案2】:

命名图像数组

<form method="POST" enctype="multipart/form-data">
  @csrf

  <h5>Upload Multiple Images</h5>
  <input type="file" multiple name="images[]" id="images"> Upload Images
</form

【讨论】:

    【解决方案3】:

    使用以下代码上传文件

    $files = $request->file('images');
    if($request->hasFile('images'))
    {
       foreach ($files as $file) 
         $product->images()->create([
           'images' => $file
         ]);
    }
    

    【讨论】:

      【解决方案4】:

      我知道这是一个老问题,但几天前我遇到了同样的问题。希望这对任何人都有帮助。

      我通过将php.ini 中的php_value upload_max_filesize 设置为超过我上传文件的大小解决了这个问题。

      如果您有兴趣,我在这里找到了答案:

      如果其他人收到此错误并且结果不是权限问题,请检查您的 php.ini...确保您的 upload_max_filesize 与您的 post_max_size 一样大。我有 1000M 用于 post_max_size (我们处理一些大的视频文件),但只有 100M 用于 upload_max_size (我怪我的老眼睛)。上传会搅动很长时间,然后抛出上面的错误。 https://github.com/laravel/framework/issues/31249

      【讨论】:

      • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      • @KhalidKhan 你说得对,这更像是一个评论而不是一个答案。对不起,我是这个网站的新手
      猜你喜欢
      • 2018-06-27
      • 2020-06-05
      • 1970-01-01
      • 2020-02-26
      • 2014-05-19
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多