【问题标题】:Laravel get name of fileLaravel 获取文件名
【发布时间】:2016-05-11 11:38:28
【问题描述】:

我基本上只是想得到一个文件的名称,我得到这样的:

$inputPdf = $request->file('input_pdf');

如果我dd($inputPdf) 它打印我null

【问题讨论】:

  • 输入为空(没有给出文件)或者您没有得到正确的输入名称。
  • 提供相关的 HTML 或任何信息可能会有用。目前,只能说:没有文件。我们不知道您在浏览器中正在做什么、您的 html 是什么样的,或者类似的东西。

标签: php file laravel laravel-5.1


【解决方案1】:
  1. 如文档中所述,获取文件名:

您可以使用 file 方法访问 Illuminate\Http\Request 实例中包含的上传文件。 file方法返回的对象是Symfony\Component\HttpFoundation\File\UploadedFile类的一个实例,扩展了PHP的SplFileInfo类,提供了多种与文件交互的方法

UploadedFile 实例上还有多种其他方法可用。查看API documentation for the class 了解有关这些方法的更多信息。

所以你可以使用这个方法:getClientOriginalName()

http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html#method_getClientOriginalName

$request->file('input_pdf')->getClientOriginalName();

将返回文件名。

您可以在调用任何方法之前检查文件是否存在:

if ($request->hasFile('input_pdf')) {
    return $request->file('input_pdf')->getClientOriginalName();
} else {
    return 'no file!'
}
  1. 要解决dd($request->file('input_pdf')) 返回null 的问题,请检查您使用的文件名称是否正确。你可以试试dd($request),看看里面有没有文件。查看Request 对象的转储时,您可以检查文件名。

【讨论】:

  • 你是否也在你的方法中传递了Request $request
  • 因为你们都没有完整地阅读这个问题:你提出了一些不相关的东西:没有文件。时期。正如问题中提到的,这是主要问题。
  • 不,这是我第一次打开问题时在这里。这个问题根本没有被编辑过。
  • 好吧,我想我明白了,就像你们说输入的名称是错误的,只是一个语法问题,而不是我写的 _ - 如果你没问题,我会勾选这个
  • 当我问及否决票时,再次感谢您的评论。会提醒我在回答之前正确阅读问题!
【解决方案2】:
$request->file->getClientOriginalName();

Check this 了解更多方法。

【讨论】:

  • 这会返回我调用非对象上的成员函数 getClientOriginalName()
  • 确保你在发布一个文件,你可以通过 dd($request) 看到请求对象的内容。还要确保您的表单(在前端)接受文件输入(enctype)
【解决方案3】:

我想你忘了添加

enctype="multipart/form-data"

以您的形式。或者,如果您使用 laravel HTML 服务提供者,请使用

{!! Form::open(array('files' => true)) !!}

【讨论】:

  • 谢谢,但我正在使用它
  • 能否请您添加更多代码 sn-p,例如您的控制器方法和 html。
猜你喜欢
  • 1970-01-01
  • 2016-11-17
  • 2019-01-14
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2021-02-05
  • 2015-06-13
相关资源
最近更新 更多