【问题标题】:Laravel 4 upload image formLaravel 4 上传图片表单
【发布时间】:2013-05-14 04:41:18
【问题描述】:

我正在尝试制作一个允许上传文件并将其存储在应用程序的 public/upload 文件夹中的表单。

我的表格是:

<form action="/image/save" method="post">
<input name="image" type="file" />
<input type="submit" value="Save"/>
</form>

和控制器:

public function save(){
$file = Input::file('image');
$destinationPath = 'upload/';
$filename = $file->getClientOriginalName();
Input::file('image')->move($destinationPath, $filename);

但是当我运行它时,我收到以下错误: 在非对象上调用成员函数getClientOriginalName()

【问题讨论】:

  • 您正在使用 $file->getClientOriginalName()。它与 $file 无关

标签: php frameworks laravel laravel-4


【解决方案1】:

如果您使用类似 Laravel 的表单样式,则可以在 array() 中添加字段 'files'=&gt; true

{{ Form::open(array('url'=>'/images/save','role'=>'form','files'=> true)) }}

否则你可以使用类似的html表单标签

<form action="/images/save" method="post" enctype="multipart/form-data">

希望这会对你有所帮助。

【讨论】:

    【解决方案2】:

    我的一个表单也遇到了同样的问题,问题是表单没有使用 'files' =&gt; true 选项定义,它告诉 Laravel4 表单助手使用 enctype="multipart/form-data" 定义表单

    这是我所做的:

    在您的控制器中定义以下数组并将其传递给您的视图,

    $form_options = array (
        'url' => 'path/to/defined/route',
        'class'  => 'form-horizontal',
        'name'   => 'newUser',
        'files'  => true
    );
    

    在您看来,如下定义您的表单:

    {{ Form::open( $form_options ) }}
    

    这将使用enctype="multipart/form-data" 定义您的表单

    【讨论】:

    • 我忘了说文件;我有文件!愚蠢的我
    【解决方案3】:

    您需要在表单上启用file input。 (Doc)

    在 Laravel 中,你可以使用:

    Form::open('image/save', array('files'=> true))
    

    <form action="/images/save" method="post" enctype="multipart/form-data">
    

    否则,您从文件输入中收到的只是文件名作为字符串。

    【讨论】:

    • 但我不明白你要在哪里写这个?
    • 在您的视图中,而不是 HTML
      标记。
    • 问题:您在文档中的哪里找到 'files'=&gt;true ?我在表单和输入部分下进行了搜索,但一无所获..
    • @Valentin 这可以在 Illuminate/Html 的 FormBuilder 中找到 github.com/laravel/framework/blob/master/src/Illuminate/Html/… 这也列在打开表单下的laravel.com/docs/html#file-input 文档中。
    • 对于不想使用 laravel 的 Form Helper 的人来说,在你的 form 标签中添加enctype="multipart/form-data" 属性就足够了。
    【解决方案4】:

    如果你不使用 Blade 来生成这样的表单

    {{ Form::open(array('url' => 'foo/bar', 'files' => true)) }}
    

    只需将此参数添加到您的表单标签中

    enctype="multipart/form-data"
    

    【讨论】:

    • 'files' =&gt; true ,这就是我要搜索的内容。
    【解决方案5】:

    您必须按如下方式获取文件名:

    //Blade form
    {{ Form::open_for_files('/image/save') }}
    {{ Form::file('image') }}
    {{ Form::close() }}
    
    //get imagename
    $filename = Input::file('image.name');
    

    祝你好运! :)

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2014-05-11
      • 2014-03-12
      • 2014-12-22
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      相关资源
      最近更新 更多