gpt4 book ai didi

php - RuntimeException SplFileInfo::getSize(): stat failed for... Laravel 4 上传图片

转载 作者:行者123 更新时间:2023-12-04 18:42:00 24 4
gpt4 key购买 nike

我使用 laravel 4(上次更新),我创建了一个 表格 我们可以在哪里上传图片 (标志/头像)。我在 MAC 操作系统,我用 崇高文本 3 , laravel MAMP 应用 .我所有的配置都设置正确,没有运行问题。

我的问题是我有这个 错误 当我从表单提交到达字段时:运行时异常
SplFileInfo::getSize(): stat/Applications/MAMP/tmp/php/phpRUJfMX
失败

这是我的表单中的代码 nameOfTheForm.blade.php :

@extends('layout.default')
@section('title')
Name Of My Project - EditProfile
@stop

@section('content')
{{Form::open(array('url'=>'uploadAvatar','files' => true))}}

<p>
{{Form::label('pseudo','pseudo (*): ')}}
{{Form::text('pseudo',Input::old('nom'))}}
</p>
@if ($errors->has('pseudo'))
<p class='error'> {{ $errors->first('pseudo')}}</p>
@endif
<br>
<br>

<p>
{{Form::label('url_Avatar','Avatar: ')}}
{{Form::file('url_Avatar',Input::old('Url_Avatar'))}}
</p>
@if ($errors->has('url_Avatar'))
<p class='error'> {{ $errors->first('url_Avatar')}}</p>
@endif
<br>
<br>

<p>
{{Form::submit('Validate your avatar')}}
</p>

{{Form::close()}}
@stop

这是我的 中的代码 Controller :
public function uploadAvatar() {


//*****UPLOAD FILE (on server it's an image, on the DB it's an url*****
$file = Input::File('url_Avatar');

//set a register path to the uploaded file
$destinationPath = public_path().'/upload/';

//have client extension loaded file and set a random name to the uploaded file, produce a random string of length 32 made up of alphanumeric characters [a-zA-z0-9]

$filename = $destinationPath . '' . str_random(32) . '.' . $file->getClientOriginalExtension();

$uploaded = Input::File('url_Avatar')->move($destinationPath,$filename);

//*****VALIDATORS INPUTS and RULES*****
$inputs = Input::all();
$rules = array(
'pseudo' => 'required|between:1,64|unique:profile,pseudo',
//urlAvatar is an url in database but we register as an image on the server
'url_Avatar' => 'required|image|min:1',
);

上传的文件代码完美无缺,我将文件注册在我想要的选定文件夹中。我的路线没有问题(无需显示这部分代码)。

但是当我提交表单时,我有这个错误:
运行时异常
SplFileInfo::getSize(): stat/Applications/MAMP/tmp/php/phpRUJfMX 失败

错误信息详情:
打开:/Applications/MAMP/htdocs/nameOfMyProject/vendor/laravel/framework/src/Illuminate/Validation/Validator.php
    }
elseif (is_array($value))
{
return count($value);
}
elseif ($value instanceof File)
{
return $value->getSize() / 1024;
}
else

看起来,Laravel 需要 (stat - 提供有关文件的信息),也就是说,需要从上传的文件中获取信息,这里是大小,但我在我的 Controller 中尝试在 $uploaded 行之前我将文件移动到所选文件夹中的位置:
//I add this line code before
$size= $file->getSize();
$uploaded=Input::File('url_Avatar')->move($destinationPath,$filename);

但是,当我这样做时,我遇到了另一个错误:验证器没有将文件 r** 识别为图像** 并要求我上传 有效格式 .我想我需要更正我遇到的第一个错误 (SplFileInfo::getSize())

如果您有任何想法...谢谢。

最佳答案

简短版本:如果文件大小大于 php.ini 的 upload_max_filesize,Laravel 的 Symphony 源返回文件大小为 0 .

建议检查您的 php.ini 文件。我不确定 MAMP 如何处理 php.ini 但如果您正在运行 Laravel,它就在那里。在 php.ini 中,upload_max_filesize 可能小于您尝试上传的文件。该值恰好在我的 Ubuntu 12.10 VM 上默认为 2megs。

查看
/vendor/symphony/http-foundation/Symphony/Component/HttpFoundation/File/UploadedFile.php
并检查 getMaxFilesize() .默认情况下,此方法会抓取 upload_max_filesize来自您主机系统上的 PHP.ini 文件的值。

有趣的是,如果你这样做

$foo = Input::file('uploaded_file') 
var_dump($foo)

或者

使用 Laravel 的 die&dump dd($foo) ,则大于 php.ini 的 upload_max_filesize 的文件返回大小为 0。

除了upload_max_filesize,PHP 文档还提到检查php.ini 以便:
- post_max_size must be larger than upload_max_filesize
- memory_limit should be larger than post_max_size

关于php - RuntimeException SplFileInfo::getSize(): stat failed for... Laravel 4 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com