在laravel中上传文件时避免异常

occ*_*m98 5 php laravel

当我在laravel中处理表单时,我有一个文件上传字段(attachment1),表单可能有也可能没有上传文件.

当我尝试处理页面时,此行会生成异常:

Input::upload('attachment1',path('storage').'attachments/'.$name);
Run Code Online (Sandbox Code Playgroud)

这是例外的文本:

Message:
Call to a member function move() on a non-object
Run Code Online (Sandbox Code Playgroud)

似乎我需要事先检查一下是否'attachment1'有文件,我发现该函数Input::has_file('attachment1')应该告诉我是否'attachment1'有文件,但即使我提交一个空表单,它也会返回true.

另外,从阅读文档来看,似乎Input::upload在尝试上传不存在的文件时应该返回false,那么为什么它会产生这个异常,我该如何修复呢?

jth*_*mas 3

无论文件是否上传,PHP中$_FILES都会有密钥。tmp_name但它是作为空字符串发送的,而不是NULL. 看来has_file()期望NULL

public static function has_file($key)
{
    return ! is_null(static::file("{$key}.tmp_name"));
}
Run Code Online (Sandbox Code Playgroud)

要在控制器中解决这个问题,您可以尝试:

if (array_get(Input::file('attachment1'), 'tmp_name'))
{
    // file uploaded
}
Run Code Online (Sandbox Code Playgroud)