如何在 laravel 中添加媒体文件?
How can I add media files in laravel?
用户可以register/sign注册为求职者或雇主。如果他是求职者,他可以在创建个人资料页面上创建个人资料。在表单上,它们有 4 个文件类型输入,以及其他输入。
请参见下面的屏幕截图。
我有一个名为 job_seeker_profiles 的 Table,里面有好几列,但只有这 4 列与我的问题相关。
resume_id、video_one_id、video_two_id、video_three_id
我还有 2 个 Table,简历和视频,每个都有一个名为 'file' 的栏目。
这是有效的,文件路径正在被插入到数据库中。
在我的 public 文件夹中,我创建了 2 个目录简历和视频。这是我要存储文件的地方。这部分也有效,当我仅上传简历(没有视频,它们是可选的)并单击创建个人资料时,该文件出现在我的 public 文件夹中的 /resumes 文件夹中。
问题是,在 job_seeker_profiles Table 的 resume_id 列中,我将这个值插入我的数据库“/Applications/XAMPP/xamppfiles/temp/phpx6Dmr”,而不是 id来自简历的文件 Table.
我觉得可能是我的人际关系出了问题?
这是我的代码。
AdminJobSeekerProfilecontroller.php 文件:
public function store(JobSeekerCreateRequest $request)
{
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$input['resume_id'] = $resume->id;
}
$input = $request->all();
if($file = $request->file('video_one_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input2['video_one_id'] = $video->id;
}
$input2 = $request->all();
if($file = $request->file('video_two_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input3['video_two_id'] = $video->id;
}
$input3 = $request->all();
if($file = $request->file('video_three_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input4['video_three_id'] = $video->id;
}
$input4 = $request->all();
JobSeekerProfile::create($input, $input2, $input3, $input4);
return redirect('/admin/job-seeker/profile/create');
}
Resume.php 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Resume extends Model
{
protected $uploads = '/resumes/';
protected $fillable = ['file'];
//create an accessor
public function getFileAttribute($resumes){
return $this->uploads . $resumes;
}
}
JobSeekerProfile.php 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class JobSeekerProfile extends Model
{
protected $dates = ['date_of_birth'];
protected $fillable = [
'user_id',
'photo_id',
'resume_id',
'video_one_id',
'video_two_id',
'video_three_id',
'first_name',
'last_name',
'email',
'full_or_part_time',
'additional_skills',
'file'
];
public function user(){
return $this->belongsTo('App\User');
}
public function resume(){
return $this->belongsTo('App\Resume');
}
public function video(){
return $this->belongsTo('App\Video');
}
}
附带说明一下,我知道我应该将视频文件存储在 amazon s3 之类的东西上,但我现在想让它以这种方式工作。如果您对 Laravel 和在基于云的系统上托管文件有任何建议,那也很好。
谢谢 Tpojka。这现在对我有用:
$input = $request->all();
$user = Auth::user();
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$input['resume_id'] = $resume->id;
}
$user->jobseekerprofile()->create($input);
return redirect('/admin/job-seeker/profile/create');
用户可以register/sign注册为求职者或雇主。如果他是求职者,他可以在创建个人资料页面上创建个人资料。在表单上,它们有 4 个文件类型输入,以及其他输入。
请参见下面的屏幕截图。
我有一个名为 job_seeker_profiles 的 Table,里面有好几列,但只有这 4 列与我的问题相关。 resume_id、video_one_id、video_two_id、video_three_id
我还有 2 个 Table,简历和视频,每个都有一个名为 'file' 的栏目。 这是有效的,文件路径正在被插入到数据库中。
在我的 public 文件夹中,我创建了 2 个目录简历和视频。这是我要存储文件的地方。这部分也有效,当我仅上传简历(没有视频,它们是可选的)并单击创建个人资料时,该文件出现在我的 public 文件夹中的 /resumes 文件夹中。
问题是,在 job_seeker_profiles Table 的 resume_id 列中,我将这个值插入我的数据库“/Applications/XAMPP/xamppfiles/temp/phpx6Dmr”,而不是 id来自简历的文件 Table.
我觉得可能是我的人际关系出了问题?
这是我的代码。
AdminJobSeekerProfilecontroller.php 文件:
public function store(JobSeekerCreateRequest $request)
{
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$input['resume_id'] = $resume->id;
}
$input = $request->all();
if($file = $request->file('video_one_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input2['video_one_id'] = $video->id;
}
$input2 = $request->all();
if($file = $request->file('video_two_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input3['video_two_id'] = $video->id;
}
$input3 = $request->all();
if($file = $request->file('video_three_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('videos', $name);
$video = Video::create(['file'=>$name]);
$input4['video_three_id'] = $video->id;
}
$input4 = $request->all();
JobSeekerProfile::create($input, $input2, $input3, $input4);
return redirect('/admin/job-seeker/profile/create');
}
Resume.php 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Resume extends Model
{
protected $uploads = '/resumes/';
protected $fillable = ['file'];
//create an accessor
public function getFileAttribute($resumes){
return $this->uploads . $resumes;
}
}
JobSeekerProfile.php 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class JobSeekerProfile extends Model
{
protected $dates = ['date_of_birth'];
protected $fillable = [
'user_id',
'photo_id',
'resume_id',
'video_one_id',
'video_two_id',
'video_three_id',
'first_name',
'last_name',
'email',
'full_or_part_time',
'additional_skills',
'file'
];
public function user(){
return $this->belongsTo('App\User');
}
public function resume(){
return $this->belongsTo('App\Resume');
}
public function video(){
return $this->belongsTo('App\Video');
}
}
附带说明一下,我知道我应该将视频文件存储在 amazon s3 之类的东西上,但我现在想让它以这种方式工作。如果您对 Laravel 和在基于云的系统上托管文件有任何建议,那也很好。
谢谢 Tpojka。这现在对我有用:
$input = $request->all();
$user = Auth::user();
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$input['resume_id'] = $resume->id;
}
$user->jobseekerprofile()->create($input);
return redirect('/admin/job-seeker/profile/create');