我使用 Laravel 4(最新版本),创建了一个表单,可以上传图片(logo/avatar)。我使用 MAC OS、Sublime Text 3、Laravel 和 MAMP 应用程序。我的所有配置都正确,没有运行问题。
我的问题是,当我提交表单中的字段时,出现以下错误:RuntimeException SplFileInfo::getSize(): stat failed for /Applications/MAMP/tmp/php/phpRUJfMX。
以下是我的表单代码 nameOfTheForm.blade.php:
这是我的控制器中的代码:
上传的文件代码运行完美,我将文件注册到所选文件夹中也没有问题。我的路由没有问题(不需要显示代码的此部分)。
但是当我提交表单时,出现了这个错误: RuntimeException SplFileInfo::getSize(): stat failed for /Applications/MAMP/tmp/php/phpRUJfMX 错误信息详情如下: open:/Applications/MAMP/htdocs/nameOfMyProject/vendor/laravel/framework/src/Illuminate/Validation/Validator.php
我的问题是,当我提交表单中的字段时,出现以下错误:RuntimeException SplFileInfo::getSize(): stat failed for /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
这是我的控制器中的代码:
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',
);
上传的文件代码运行完美,我将文件注册到所选文件夹中也没有问题。我的路由没有问题(不需要显示代码的此部分)。
但是当我提交表单时,出现了这个错误: RuntimeException SplFileInfo::getSize(): stat failed for /Applications/MAMP/tmp/php/phpRUJfMX 错误信息详情如下: open:/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 - 给出文件的相关信息),也就是说,需要获取上传文件的信息,比如文件大小。但是我尝试在控制器中这行代码之前使用它,即在将文件移动到所选文件夹的$uploaded处:
//I add this line code before
$size= $file->getSize();
$uploaded=Input::File('url_Avatar')->move($destinationPath,$filename);
但是,当我这样做时,我又遇到了另一个错误:验证器无法将文件识别为图像并要求我上传有效的格式。我认为我需要纠正我之前的第一个错误(SplFileInfo::getSize())
如果您有任何想法...谢谢。