问题描述
我正在使用Laravel 7. *上传文件数组,但是与文档不同,文件并不总是以Illuminate \ Http \ UploadedFile的形式到达。使用Laravel的测试方法对我的动作提出请求,触发一种行为,使用像Insomnia这样的Rest Client触发另一种行为。
我在操作中测试了三种检索文件的方式:假设输入为documents
- $ request-> file('documents')
- $ request->文档
- $ fileBag = $ request->文件; $ fileBag-> get('documents');
当我使用第一个时,来自单元测试,它给了我一组Illuminate\Http\File
实例。从失眠症中,我得到了一个Illuminate\Http\UploadedFile
数组,它应该是这样。
当我使用第二种方法时,单元测试会收到null,而Insomnia仍会收到UploadedFile
最令人惊讶的行为是当我使用第三种方法时,单元测试再次收到null,但是从Insomnia中得到Symfony\Component\HttpFoundation\File\UploadedFile
(!!!)
这是我测试的一个例子:
$document = \Storage::disk('tests')->path('document.pdf');
$uploaded = new Illuminate\Http\File($document,'document.pdf');
$this->actingAs($admin,'api')
->withHeaders([
'Content-Type' => 'multipart/form-data; boundary: --xxxboundary'
]);
->post(route('store_document'),[
'documents' => [
$uploaded
]
]);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)