在解释问题之前。让我展示一下控制器功能:
public function storePost(IdeaRequest $request)
{
$idea = new Idea();
$idea->idea_title = $request->input('idea_title');
$idea->user_id = $request->input('user_id');
$idea->idea_image = $request->file('idea_image')->move('publicPages\images')->getClientOriginalName();
$idea->idea_info = $request->input('idea_info');
$idea->selection = $request->input('selection');
$idea->idea_location = $request->input('idea_location');
$idea->idea_goal = $request->input('idea_goal');
$idea->idea_description = $request->input('idea_description');
$idea->save();
session()->flash('flash_message', 'Your idea has been submitted for Review');
return back();
}
它将图像存储为.tmp文件。我尝试过的东西
guessExtension()
,它只返回扩展名,而不返回甚至存储图像。
getClientOriginalName()
,它将引发错误;未定义
getClientOriginalName
方法。我搜索了方法,它在那里。使用了其命名空间
Symfony\Component\HttpFoundation\File\UploadedFile
。它不起作用要么。
从
stackoverflow
中尝试了不同的方法,没有任何效果直到现在换句话说,我花了很多时间
解决了这个问题,但没有任何效果。任何帮助都将是
赞赏。
最佳答案
干得好:
public function storePost(IdeaRequest $request)
{
$request->file('idea_image')->move('publicPages\images');
$filename = $request->file('idea_image')->getClientOriginalName();
$idea = new Idea();
$idea->idea_title = $request->input('idea_title');
$idea->user_id = $request->input('user_id');
$idea->idea_image = $filename;
$idea->idea_info = $request->input('idea_info');
$idea->selection = $request->input('selection');
$idea->idea_location = $request->input('idea_location');
$idea->idea_goal = $request->input('idea_goal');
$idea->idea_description = $request->input('idea_description');
$idea->save();
session()->flash('flash_message', 'Your idea has been submitted for Review');
return back();
}
仔细观察。您将必须在2行中执行此操作:
$request->file('idea_image')->move('publicPages\images');
$filename = $request->file('idea_image')->getClientOriginalName();
为什么?
move()
返回表示新文件的File
对象。File
类没有getClientOriginalName()
方法。该方法属于UploadedFile
。链接它们时,您正尝试从
getClientOriginalName()
访问File
(尚不存在)。看一下文档here。然而...
File扩展了具有
getFilename()
方法的PHP本机SplFileInfo class。所以我想你也可以做:$request->file('idea_image')->move('publicPages\images')->getFilename();
关于php - 图像另存为tmp文件在数据库laravel中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36924681/