上传图片并以不同的名称存储

upload image and store with different name

这里应该是三个进程;

Table结构:charts

<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]);
    }
}

型号:

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

    }
}

你可以用这个,

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

希望对您有所帮助。

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

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

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

要重命名文件,您可以在 $file->move('charts', $name);

之后使用 php rename( string $oldname, string $newname) 函数
$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
);