Laravel 5.4 fopen():文件名不能为空

时间:2017-08-10 16:42:23

标签: php laravel laravel-5

我想在laravel 5.4中上传图片 这是代码:

if ($request->hasFile('image') && $request->image->isValid()) {
        $image = $request->image;

        $image_name = bcrypt($image->getClientOriginalName());

        Storage::disk('public')->putFileAs('images', $image, $image_name . '.' . $image->getClientOriginalExtension());

        $article->image($image_name);
    }
  在FilesystemAdapter.php(第146行)

我检查了FileSystemAdapter.php,发现问题出现在这一行:

$stream = fopen($file->getRealPath(), 'r+');

当我转储$ file变量时,它返回正确的信息,但是当我var_dump($file->getRealPath();时它显示bool(false)并且我无法上传图像

3 个答案:

答案 0 :(得分:8)

我们在Windows®Server的Internet信息服务(IIS)中遇到此问题。并且唯一需要的是 - 对C:\ Windows \ temp的许可,因为它在php.ini中为php7设置为upload_tmp_dir。

答案 1 :(得分:5)

我在Windows 10上使用Laragon 4.0.12的情况。

问题是我的php.ini文件中的upload_tmp_dir = ...尚未设置所需的权限。

如果注释了此设置,则该值应为默认的Windows temp目录(C:\ Windows \ Temp,您可以检查其权限)。

解决方案-我将其更改为:

upload_tmp_dir = "C:\Users\{my_user}\AppData\Local\Temp" 

以避免混淆更改权限。

更改生效后重新启动服务器。

要考虑的php.ini中的其他设置:

upload_max_filesize = 
max_file_uploads = 

还需要启用以下php扩展名:exif,gd2

答案 2 :(得分:0)

我的情况是:

目标文件夹在那里不存在。我创建它。所以错误消失了。

laravel管理驱动器在这里定义:

Config / admin.php

您可以在公用文件夹中定义它,例如:在公用文件夹中上传文件夹。

我的目标文件夹(图像)应该在/ uploads /中创建,而不是在公共

中创建

所以我在上传中创建图像,但错误消失了