Laravel 4: перемещение файлов после загрузки

У меня проблемы с попыткой загрузить фотографии и любые файлы в мое приложение, потому что они загружаются, но как файлы .tmp, и они не отображаются должным образом в моем представлении.

1.-Моя форма, я пытаюсь загрузить участника с именем, группой, адресом электронной почты, описанием и фотографией.

  {{Form::open(array('action' => 'AdminController@addMember','files'=>true)) }}
  {{ Form::label('file','Agregar Imagen',array('id'=>'','class'=>'')) }}
  {{ Form::file('file','',array('id'=>'','class'=>'')) }}
  <br/>
  {{Form::text('name','',array('class' => 'form-control','placeholder'=> 'Nombre'))}}
  {{Form::text('group','',array('class' => 'form-control','placeholder'=> 'Cargo'))}}
  {{Form::text('email','',array('class' => 'form-control','placeholder'=> 'Correo'))}}  
  {{Form::textarea('description','',array('class' => 'form-control','placeholder'=>''))}}
  <!-- submit buttons -->
  {{ Form::submit('Guardar') }}          
  <!-- reset buttons -->
  {{ Form::reset('Reset') }}          
  {{ Form::close() }}

2.-Моя функция загрузки в контроллере

public function addMember()
{
    $name = Input::file('file')->getClientOriginalName();
    $newname = Input::file('file')->getFilename();    
    Input::file('file')->move(storage_path(),$name);
    $subpath = storage_path();
    $path = $subpath.'/'.$newname2;
    $name2 = Input::get('name');
    $email = Input::get('email');
    $description = Input::get('description');
    $group = Input::get('group');

    DB::table('contactgroups')->insert(
        array('group' => $group, 'name' => $name2, 'path' => $path, 'email' => $email, 'description' => $description)
    );
    $members = DB::table('contactgroups')->get();
    return View::make('admin.members',['members' => $members]);
} 

Я знаю, что должен использовать модель для загрузки вещей в мою базу данных, но сейчас это не проблема.

3.- Мой вид дисплея

@extends('layouts.main')
@section('content')
    @foreach($members as $member)   
        <div class = "row fondue">
                <h3><div class="col-md-12"><b><?=$member->name ?></b></div></h3>    
                <div class="col-md-4"> <img src="<?=$member->path ?>" alt="Image" class = "contact-img"></div>
                <div class="col-md-4"><?=$member->description ?></div>
                <div class="col-md-4"><?=$member->email ?></div>

        </div>  

    @endforeach

@stop

и это все ... информация сохраняется в базе данных, но изображения не отображаются должным образом в представлении, и файлы загружаются как файлы tmp, я не знаю, почему


person Anibal Cardozo    schedule 27.12.2014    source источник
comment
Каталог storage не является (или не должен быть) общедоступным. Вам придется хранить изображение где-то в public   -  person lukasgeiter    schedule 27.12.2014
comment
но у меня есть некоторые личные документы, которые я не хочу публиковать   -  person Anibal Cardozo    schedule 27.12.2014
comment
Вы имеете в виду, что только авторизованные пользователи должны иметь к нему доступ?   -  person lukasgeiter    schedule 27.12.2014
comment
не совсем так, некоторые документы для общего доступа, а некоторые документы должны быть видны только администраторам   -  person Anibal Cardozo    schedule 27.12.2014
comment
Хорошо, это возможно, но я бы предпочел, чтобы вы удалили этот вопрос и задали новый в соответствии с тем, как я могу использовать (защищенные) активы из каталога storage. В вопросе вы также должны указать, как проверяется пользователь (у вас уже есть фильтр маршрута для этого?) Спасибо.   -  person lukasgeiter    schedule 27.12.2014


Ответы (1)


Из документации Laravel

Перемещение загруженного файла

Input::file('photo')->move($destinationPath);

Input::file('photo')->move($destinationPath, $fileName);

Источник: http://laravel.com/docs/4.2/requests#files

person Eduardo Cruz    schedule 28.12.2014