当我在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,那么为什么它会产生这个异常,我该如何修复呢?
无论文件是否上传,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)
| 归档时间: |
|
| 查看次数: |
4343 次 |
| 最近记录: |