如何使用Laravel 5.1在表中保存上传的文件名

时间:2015-10-15 14:19:53

标签: php mysql laravel file-upload laravel-5.1

我需要帮助使用laravel 5.1在数据库表中保存上传的文件名。

用于保存图像详细信息的我的控制器代码

public function store(Request $request)
{
   if($request->hasFile('img_filename'))
   {
       $destinationPath="offerimages";
       $file = $request->file('img_filename');
       $filename=$file->getClientOriginalName();
       $request->file('img_filename')->move($destinationPath,$filename);

   }

    $input=$request->all();
    Offer_image::create($input);
    return redirect('offerimage');
}

我接受图片的视图代码

{!! Form::open(array('route'=>'offerimage.store','role'=>'form','files'=>true)) !!}
              <div class="box-body">

                <div class="form-group">
                  {!! Form::label('img_name','Name') !!}
                  {!! Form::text('img_name', $value = null, $attributes = array('class'=>'form-control','id'=>'img_name','required')) !!}
                </div>

                <div class="form-group">
                  {!! Form::label('img_description','Description') !!}
                  {!! Form::textarea('img_description', $value = null, $attributes = array('class'=>'form-control','id'=>'img_description','required')) !!}
                </div>

                <div class="form-group">
                  {!! Form::label('img_filename','Upload Image') !!}
                  {!! Form::file('img_filename') !!}
                </div>



                {!! Form::hidden('status',$value='active') !!}

              </div><!-- /.box-body -->

              <div class="box-footer">
                {!! Form::submit('Submit',$attributes=array('class'=>'btn btn-primary')) !!}
              </div>
              {!! Form::close() !!}

这个控制器代码用于存储图像正常工作,但是我试图将图像文件名保存到表中,此代码将文件路径存储到数据库表。

由于我使用直接create()方法将请求对象存储在表中,我不知道如何存储文件名而不是路径。

Check this Image for table data

3 个答案:

答案 0 :(得分:8)

问题是您上传图片时请求数据没有变化。所以img_filename仍然包含tmpdata。

你可以试试这个:

$input = $request->all();
$input['img_filename'] = $filename;

答案 1 :(得分:1)

适用于我的代码:

$updir = 'images/';
$img_name = 'image.jpeg';
Request::file('img_filename')->move($updir, $img_name);

答案 2 :(得分:0)

def train (x,y,w,b,alpha,epoch):
train_error = []

  for e in range (epoch):
    w,b = update_w_b(x,y,w,b,alpha)
    train_error.append(avg_loss.item())

#process monitoring
if e%400 == 0:
  print ("epoch: {}/{} \t loss: {:.4f}".format(e+1,epoch,avg_loss(x,y,w,b)))
  return w,b,train_errorenter code here

上面是 Laravel 用来保存文件的哈希名称