无法将文件上传到服务器Laravel

时间:2014-07-28 12:15:51

标签: php file laravel laravel-4

我试图将一些产品添加到我的数据库中,我必须上传此产品的照片。我已经制作了一个控制器和视图,但是当我点击创建时我发现了一个错误

Unable to create the "/uploads/products/" directory

这是我的代码:
控制器

public function postAddProduct(){
    $destinationPath = '';
    $filename        = '';
    $newId = Product::max('id')+1;
    $validator = Validator::make(Input::all(), array(
        'name' => 'required',       
        'description' => 'required',            
        'partner_link' => 'required',
        'image'=>'required'
    ));
    if (Input::hasFile('image')) {
        $file            = Input::file('image');
        $destinationPath = public_path().'/uploads/products/';
        $filename        = $newId.'.'.$file->getClientOriginalExtension();
        $uploadSuccess   = $file->move($destinationPath, $filename);
    }

    if($validator->passes()){
        $product = new Product;
        $product->name = Input::get('name');
        $product->description = Input::get('description');
        $product->category_id = Input::get('category');
        $product->partner_link = Input::get('partner_link');
        $product->photo = $filename;
        $product->save();   

        return Redirect::back();
    }else{
        return Redirect::back()->withErrors($validator)->withInput();
    }



}

查看:

{{ Form::open(array('url'=>'user/admin/products/addd', 'files' => true, 'class'=>'col-md-4', 'style'=> 'float:none; margin: 0 auto', 'id'=>'register-form')) }}
            <h2 class="form-signin-heading">Add Product</h2>    
            {{ Form::text('name', null, array('class'=>'form-control', 'placeholder'=>'Name')) }}    
            {{ Form::textarea('description', null, array('class'=>'form-control', 'placeholder'=>'Description')) }}
            {{ Form::text('partner_link', null, array('class'=>'form-control', 'placeholder'=>'Partner link')) }}
            {{Form::label('category', 'Category: ', array('class' => 'field-name'))}}
            <select name="category">
                <?php $i = 0; ?>
                @foreach($categories as $category)      
                    <optgroup label="{{$category['name']}}">
                    @foreach($category['subcategories'] as $sub)
                        <option value="{{$sub->id}}">{{$sub->name}}</option>
                    @endforeach
                    </optgroup>
                @endforeach
            </select>
            <div class="clearfix"></div>                
            {{Form::file('image', array('style' => 'margin-bottom: 10px'))}}
            {{ Form::submit('Add', array('class'=>'btn btn-large btn-primary btn-block'))}}
        {{ Form::close() }}             

更新

当前bootstrap/paths.php档案:

return array(       
    'app' => __DIR__.'/../app',
    'public' => __DIR__.'/../public',
    'base' => __DIR__.'/..',
    'storage' => __DIR__.'/../app/storage',  
);

1 个答案:

答案 0 :(得分:2)

听起来public/uploads/products文件夹不存在,Laravel无权创建它。

尝试手动创建文件夹,通过运行chmod 775 public/uploads/products确保Laravel对其具有可写访问权限。然后再试一次代码。