上传图像并使用不同的名称存储

时间:2018-06-15 12:28:01

标签: php laravel laravel-5.3

这里应该有三个过程;

  • 将图片移至公共路径中的文件夹:/charts/
  • 存储不同的名称(图像的自动编号)
  • 将图片名称存储在charts,列名称为file

表结构:charts

enter image description here

<div class="form-group col-lg-10">
                {!! Form::label('file', 'Chart upload:') !!}
                {!! Form::file('file', null,['class'=>'form-control'])!!}
</div>

我在这里做了很多事情:

public function store(Request $request)
{

        $input = $request->all();

    if($file = $request->file('file'))
    {
        $name = time() . $file->getClientOriginalName();
        $file->move('charts', $name);
        charts::create(['file'=>$name]);
    }
}

MODEL

    class charts extends Model
{
    //
    protected $uploads = '/upload/';
    protected $fillable = ['file', 'trade_id'];
    public function getFileAttribute($photo)
    {
        return $this->uploads . $photo;

    }
}

2 个答案:

答案 0 :(得分:0)

你可以用它,

if($file = $request->file('file'))
    {
        $name = time() . $file->getClientOriginalName();
        $request->file('file')->storeAs(
                   'charts', newName
                             );
        charts::create(['file'=>$name]);
    }

我希望这会有所帮助。

答案 1 :(得分:0)

{{ Form::file('file', ['class' => 'form-control']) }} - 第二个参数必须是一个数组(默认函数原型)

请检查您在charts文件夹中写入的权限 例如,在Linux控制台中,使用:sudo chmod 755 charts

此外,您可以将文件夹的所有者更改为www-data,以便Web服务器进程可以访问该文件夹。在Linux控制台中:sudo chown www-data charts

要重命名文件,您可以在rename( string $oldname, string $newname)

之后使用php $file->move('charts', $name);功能
$newname = 'cool-name' . $file->getClientOriginalExtension();  
rename($name , $newname);

重命名后,您可以将信息保存到数据库中 要在数据库中保存数据:

DB::table('charts')->insert(
    [  'trade_id' => 12345,    // 12345 Trader id example
           'file' => $newname, // new filename
     'created_at' => time(),   // current timestamp
     'updated_ad' => time()]   // current timestamp
);