微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-在laravel 4.2中上传文件时使用Input :: all()

根据this,如果您执行以下操作

<?PHP

// app/routes.PHP

Route::get('/', function()
{
    return View::make('form');
});

Route::post('handle-form', function()
{
    var_dump(Input::all());
});

我们将得到以下内容

array(0) { }

根据Dayle Rees的说法,这是因为文件存储在$_FILES数组中,而不是$_GET或$_POST中.因此,当我们将第二个函数更改为:

Route::post('handle-form', function()
{
    var_dump(Input::file('book'));
});

我们得到:

object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) {<
  ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
  bool(false)<
  ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
  string(14) "codebright.pdf"<
  ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
  string(15) "application/pdf"<
  ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
  int(2370413)<
  ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
  int(0)<
  ["pathName":"SplFileInfo":private]=><
  string(36) "/Applications/MAMP/tmp/PHP/PHPPOb0vX"<
  ["fileName":"SplFileInfo":private]=><
  string(9) "PHPPOb0vX"<
}<

但是,在我的项目中,当我使用Input :: all()时,仍然可以获得与上面非常相同的正确输出.我使用的文件是不同的,但是希望您能理解.为什么我的项目与本书有不同的输出

解决方法:

如果您看到/vendor/laravel/framework/src/Illuminate/Http/Request.PHP,

/**
 * Get all of the input and files for the request.
 *
 * @return array
 */
public function all()
{
    return array_replace_recursive($this->input(), $this->files->all());
}

其中包含文件和其他输入.
我想(但不确定)由于CodeBright是从laravel 3(http://goo.gl/NWltLh)启动的,因此稍后将在Laravel 4上更新本节代码.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐