首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映像正在将tmp文件保存在数据库laravel中。

映像正在将tmp文件保存在数据库laravel中。
EN

Stack Overflow用户
提问于 2016-04-28 20:16:34
回答 1查看 4.7K关注 0票数 1

在解释问题之前。让我展示一下控制器的功能:

代码语言:javascript
复制
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那里尝试了不同的东西,到目前为止对我没有什么用。换句话说,我花了很多时间来解决这个问题,但没有什么效果。任何帮助都将不胜感激。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 21:55:13

给你:

代码语言:javascript
复制
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();
}

仔细观察。您必须在两个单独的行中这样做:

代码语言:javascript
复制
$request->file('idea_image')->move('publicPages\images');
$filename = $request->file('idea_image')->getClientOriginalName();

为什么?

move()返回一个表示新文件的File对象。

File类没有getClientOriginalName()方法。该方法属于UploadedFile

当您链接它们时,您正在尝试从不存在的getClientOriginalName()中访问File。看看docs 这里

但是.

文件扩展了具有getFilename()方法的PHP原生SplFileInfo类。所以我想你也可以:

代码语言:javascript
复制
$request->file('idea_image')->move('publicPages\images')->getFilename();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36924681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档