我正在尝试将上传的文件重命名为与表Slider的ID相同的唯一名称
public function postAddSlider(){
$title = Input::get('title');
$image = Input::file('image');
$link = Input::get('link');
$description = Input::get('description');
$filename = $image->getClientOriginalName(); //<-- i want to change that filename to be id of table Slider
$uploadSuccess = Input::file('image')->move(base_path().'/public/assets/slider/', $filename);
if($uploadSuccess){
$slider = Slider::create(array(
'image' => $uploadSuccess->getRealPath(),
'title' => $title,
'link' => $link,
'description' => $description
));
if($slider){
return Redirect::route('slider-add-get')
->with('message','Slider Added Successfully');
}
}
else{
return Redirect::route('slider-add-get')
->with('message','File Upload Error');
}
}
或者您是否有其他解决方案来重命名唯一名称?
答案 0 :(得分:1)
我不知道你的架构是什么样的,但是如果你想得到一个模型的id,你必须先保存它。
也许你可以这样做:
$slide = new Slide();
$slide->title = Input::get('title');
$slide->url = $temporaryurl;
...etc...
$slide->save();
//once the slide is saved, we can access its id
$slide->url = 'slide-' . $slide->id . $file->getClientOriginalExtension();
$slide->save(); //updates the new url
或者,如果您只是想生成唯一的文件名,您可以使用原始文件名+时间戳...可能会导致重复...但非常不可能(这2张图片将上传同一个文件名在同一秒内)。
或者,或许,幻灯片标题(删除了非法字符,空格替换为破折号等),加上时间戳。