在解释问题之前。让我展示控制器功能:
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
尝试了不同的事情,没有任何效果
对我来说直到现在。换句话说,我投入了大量时间
解决这个问题但没有任何效果。任何帮助都很高
赞赏。
答案 0 :(得分:1)
你走了:
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();
}
仔细观察。您必须分为两行:
$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();