在解释问题之前。让我展示一下控制器的功能:
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那里尝试了不同的东西,到目前为止对我没有什么用。换句话说,我花了很多时间来解决这个问题,但没有什么效果。任何帮助都将不胜感激。发布于 2016-04-28 21:55:13
给你:
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。看看docs 这里。
但是.
文件扩展了具有getFilename()方法的PHP原生SplFileInfo类。所以我想你也可以:
$request->file('idea_image')->move('publicPages\images')->getFilename();https://stackoverflow.com/questions/36924681
复制相似问题