Php 无法将Symfony\Component\HttpFoundation\File\UploadedFile类型的对象用作数组Laravel 4.2文件上载
我正在尝试使用Laravel4.2同时上传大量文件,但不起作用 当我尝试上载2个或更多文件时,laravel只上载最新选定的文件 现在我更改了一些内容,它给了我一个错误Php 无法将Symfony\Component\HttpFoundation\File\UploadedFile类型的对象用作数组Laravel 4.2文件上载,php,arrays,symfony,laravel-4,Php,Arrays,Symfony,Laravel 4,我正在尝试使用Laravel4.2同时上传大量文件,但不起作用 当我尝试上载2个或更多文件时,laravel只上载最新选定的文件 现在我更改了一些内容,它给了我一个错误不能将Symfony\Component\HttpFoundation\File\UploadedFile类型的对象用作数组 为什么它会返回这个错误?他为什么不上传所有的图片 我的控制器: public function postUpload() { // getting all of the post data $fil
不能将Symfony\Component\HttpFoundation\File\UploadedFile类型的对象用作数组
为什么它会返回这个错误?他为什么不上传所有的图片
我的控制器:
public function postUpload() {
// getting all of the post data
$files = Input::file('file');
//echo "<pre>";
//var_dump($files);
//echo "</pre>";
//die;
$map = Input::get('mapname');
// setting up rules
$rules = array('file' => 'max:10000'); //mimes:jpeg,bmp,png and for max size max:10000
// doing the validation, passing post data, rules and the messages
$validator = Validator::make($files, $rules);
if ($validator->fails()) {
// send back to the page with the input data and errors
Session::flash('error_message', 'Er ging iets mis!');
return Redirect::to('admin/img/upload')->withInput()->withErrors($validator);
}
else {
// checking file is valid.
if($files)
{
//echo "<pre>";
//var_dump(Input::hasFile('file'));
//echo "</pre>";
//die;
foreach($files as $file)
{
$destinationPath = 'public/pictures/overall/'.$map.'/'; // upload path
$filename = str_random(40).'_'.$file[0]->getClientOriginalName();
$extension = $file[0]->getClientOriginalExtension(); // getting image extension
$file[0]->move($destinationPath, $filename); // uploading file to given path
}
// sending back with message
Session::flash('success', 'Succesvol geüpload!');
return Redirect::to('admin/img/upload');
}
else {
// sending back with error message.
Session::flash('error_message', 'Er ging iets mis!');
return Redirect::to('admin/img/upload');
}
}
}
公共功能postpload(){
//获取所有post数据
$files=Input::file('file');
//回声“;
<form method="POST" action="http://localhost/RPR/admin/img/uploadfile" accept-charset="UTF-8" enctype="multipart/form-data">
<input name="_token" type="hidden" value="SkMoFqiOYBJZOOrvcwtMUGGjHV6gPftAq2mPE6Uz">
<select id="mapname" name="mapname">
<option value="TAC-Tielt-Shakedown-2015">TAC Tielt Shakedown 2015</option>
<option value="TAC-Tielt-2013">TAC Tielt 2013</option>
<option value="Rally-van-Staden-2015">Rally van Staden 2015</option>
</select>
<br><br>
<input multiple="1" name="file[]" type="file">
<br>
<button type="submit" class="btn btn-success">Uploaden</button>
</form>
//var_dump($files);
//回声“;
<form method="POST" action="http://localhost/RPR/admin/img/uploadfile" accept-charset="UTF-8" enctype="multipart/form-data">
<input name="_token" type="hidden" value="SkMoFqiOYBJZOOrvcwtMUGGjHV6gPftAq2mPE6Uz">
<select id="mapname" name="mapname">
<option value="TAC-Tielt-Shakedown-2015">TAC Tielt Shakedown 2015</option>
<option value="TAC-Tielt-2013">TAC Tielt 2013</option>
<option value="Rally-van-Staden-2015">Rally van Staden 2015</option>
</select>
<br><br>
<input multiple="1" name="file[]" type="file">
<br>
<button type="submit" class="btn btn-success">Uploaden</button>
</form>
//死亡;
$map=Input::get('mapname');
//制定规则
$rules=array('file'=>'max:10000');//mimes:jpeg、bmp、png和最大大小max:10000
//进行验证,传递post数据、规则和消息
$validator=validator::make($files,$rules);
如果($validator->fails()){
//将输入数据和错误发送回页面
会话::flash('error_message','Er ging iets mis!');
返回Redirect::to('admin/img/upload')->withInput()->withErrors($validator);
}
否则{
//检查文件是否有效。
如果($文件)
{
//回声“;
<form method="POST" action="http://localhost/RPR/admin/img/uploadfile" accept-charset="UTF-8" enctype="multipart/form-data">
<input name="_token" type="hidden" value="SkMoFqiOYBJZOOrvcwtMUGGjHV6gPftAq2mPE6Uz">
<select id="mapname" name="mapname">
<option value="TAC-Tielt-Shakedown-2015">TAC Tielt Shakedown 2015</option>
<option value="TAC-Tielt-2013">TAC Tielt 2013</option>
<option value="Rally-van-Staden-2015">Rally van Staden 2015</option>
</select>
<br><br>
<input multiple="1" name="file[]" type="file">
<br>
<button type="submit" class="btn btn-success">Uploaden</button>
</form>
//var_dump(输入::hasFile('file'));
//回声“;
<form method="POST" action="http://localhost/RPR/admin/img/uploadfile" accept-charset="UTF-8" enctype="multipart/form-data">
<input name="_token" type="hidden" value="SkMoFqiOYBJZOOrvcwtMUGGjHV6gPftAq2mPE6Uz">
<select id="mapname" name="mapname">
<option value="TAC-Tielt-Shakedown-2015">TAC Tielt Shakedown 2015</option>
<option value="TAC-Tielt-2013">TAC Tielt 2013</option>
<option value="Rally-van-Staden-2015">Rally van Staden 2015</option>
</select>
<br><br>
<input multiple="1" name="file[]" type="file">
<br>
<button type="submit" class="btn btn-success">Uploaden</button>
</form>
//死亡;
foreach($files作为$file)
{
$destinationPath='public/pictures/totall/'。$map./';//上传路径
$filename=str_random(40)。“'.$file[0]->getClientOriginalName();
$extension=$file[0]->getClientOriginalExtension();//获取图像扩展名
$file[0]->move($destinationPath,$filename);//将文件上载到给定路径
}
//发回消息
会话::flash('success','successvol geüpload!');
返回重定向::到('admin/img/upload');
}
否则{
//正在发送回错误消息。
会话::flash('error_message','Er ging iets mis!');
返回重定向::到('admin/img/upload');
}
}
}
我使用的视图:
// Should be array of "UploadedFile" objects
$files = Input::file('file');
if($files)
{
// Iterating over the array
// "file" should be an instance of UploadedFile
foreach($files as $file)
{
// ** You cannot use $file[0] **
$filename = str_random(40).'_'.$file[0]->getClientOriginalName();
// Instead, use this
$filename = str_random(40).'_'.$file->getClientOriginalName();
}
}
{{Form::open(数组('action'=>)AdminPictureController@PostUpload“,“接受字符集”=>“UTF-8”,“文件”=>true))}
@foreach(数组\反向($folders)作为$folder)
{{str_replace('-','$folder)}
@endforeach
{{Form::file('file[]',['multiple'=>true])}
上传
{{Form::close()}}
渲染的视图:
2015年交咨会分层调整
交咨会Tielt 2013
Rally van Staden 2015
上传
当我按下“上传”(submit)按钮时,我得到了错误信息。
当我按下按钮时,它进入路由route::post('img/uploadfile','AdminPictureController@PostUpload');代码>
所以他拿了控制器。但哪里出了问题,我不知道。他强调了这一点:
希望有人知道答案
最亲切的问候
罗宾嗯,让我看看我是否做对了
如上所述,$file[0]
是导致无法将UploadedFile类型的对象用作数组的明确原因
这仍然不能解决显示单个文件而不是多个文件的问题。您确定这仍然是一个问题吗?您是否尝试过var\u dump
使用$files=Input::file()
?是的,执行var\u dump($files)代码>告诉我:(我试着上传3个文件)我明白了,我没想到…:)是 啊我知道。就我所知,一切都很好。所以我不明白为什么它不起作用。。。你知道吗?还是一个有效的解决方案?多亏了你,我找到了解决方案!我同意这个答案。谢谢