3

我被卡住了..我想添加以提供通过表单添加新照片的可能性。我已正确设置照片资源。带有以下内容的表格照片:id、标题、标题、路径:字符串。

这是我到现在为止在视图 photo.create 中制作的表格:

{{ Form::open(array('route' => 'photos.store'),'image/save', array('files'=> true)) }}

 {{ Form::label('title', 'Title: ') }}
 {{ Form::text('title') }}

 {{ Form::label('caption', 'Caption: ') }}
 {{ Form::textarea('caption') }} <br>

 {{ Form::submit('Add Photo', array('class' => 'btn btn-primary' )) }}

 {{ Form::close() }}

我如何添加一个按钮,这要归功于选择一个新文件?

谢谢!!

编辑:

这是我到目前为止所做的简单存储方法:

public function store()
{
    $input = Input::all();

    $rules = array('title' => 'required', 'path' => 'required');

    $validation = Validator::make($input, $rules);

    if ($validation->passes()) 
    {

        $photo = new Photo();
        $photo->title = $input['title'];
        $photo->caption = $input['caption'];
        $photo->path = $input['path'];

        $photo->save();

        return Redirect::route('photos.index');
    }

    return Redirect::back()->withInput()->withErrors($validation)->with('message','There were validation message');

}

我怎样才能正确地把那个实现放在那里来检索文件并存储在位于 public/img 的文件夹中?然后我如何保存该路径并放入 $photo->path ?

非常感谢你!!

4

3 回答 3

7

采用Form::file('image')

然后,您可以检索上传的文件Input::file('image')并将其移动到目的地Input::file('file')->move(YOUR_DESTINATION_PATH);

参考: http: //laravel.com/docs/requests#fileshttp://laravel.com/docs/html#file-input


编辑 :

要将您上传的文件存储到public/imgInput::file('file')->move(base_path() . '/public/img');

在数据库中存储路径:

$photo->path = base_path() . '/public/img' . Input::file('file')->getClientOriginalName(); // if you want your real path on harddrive

或者

$photo->path = URL::to('img/' . Input::file('file')->getClientOriginalName()); // if you want an exploitable path for http render

第二次编辑 在您的表格上查看我的更正http://paste.laravel.com/KX9

@extends('master')
@section('blog')
<div class="span12 well">
    {{ link_to_route('photos.index', 'Back to index') }}
</div>

<div class="span12 well">
   {{ Form::open(array('route' => 'photos.store', 'files'=> true)) }}
     {{ Form::label('title', 'Title: ') }}
     {{ Form::text('title') }}
     {{ Form::label('caption', 'Caption: ') }}
     {{ Form::textarea('caption') }} 
     {{ Form::label('image', 'Image: ') }}
     {{ Form::file('image') }}
     <br>
     {{ Form::submit('Add Photo', array('class' => 'btn btn-primary' )) }}
   {{ Form::close() }}
   <br><br>
   @if($errors->any())
      {{ implode('', $errors->all('<li class="error">:message</li>')) }}
   @endif
</div>
@stop
于 2013-08-21T09:02:34.933 回答
0

您可以使用Form::file('image');

http://laravel.com/docs/html#file-input

于 2013-08-21T08:55:53.967 回答
0
{{ Form::open(array('action' => 'HomeController@upload', 'files'=>true)) }}
{{ Form::label('image', 'Upload Image')}}
{{ Form::file('image') }}
{{ Form::submit('Submit') }}
{{ Form::close() }}

第2步:

public function upload(){
    $image = Input::file('image');
    $savepath = 'public/uploads/';
    $filename = $image->getClientOriginalName();
    Input::file('image')->move($savepath, $filename);
}

最后一步:

Route::get('/upload' function()    
{
    return View::make('upload');    
});    
Route::post('/upload', 'HomeController@upload');
于 2015-07-10T06:36:41.843 回答