我想在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)
并且我无法上传图像
答案 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 /中创建,而不是在公共
中创建所以我在上传中创建图像,但错误消失了