如何将文件注入http请求 [英] how to inject a file into http request

查看:119
本文介绍了如何将文件注入http请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个测试用例:

$response = $this->postJson('api/unit/'.$unit->id.'/import',['file' =>Storage::get('file/file.xlsx')]);
    $response->assertJsonFragment(['a'=>'b']);

我的控制器:

public function import(Request $request, Unit $unit)
{

    $this->validate($request, [
        'file' => 'file|required_without:rows',
        'rows' => 'array|required_without:file',
        'dry_run' => 'boolean',
    ]);
    if ($request->has('rows')) {
        //
    } else {
        $results = $request->file('file');
    }

    return "ok";
}

但是我认为我的测试用例是错误的,因为当我在控制器中dd($ reuqest-> file('file'))时,它返回null. 所以,我怎样才能请求文件到我的控制器. 请帮助

解决方案

您可以像这样使用UploadFile:

$fileName= 'file.png';
$filePath=sys_get_temp_dir().'/'.$fileName;
$mimeTypeFile=mime_content_type($filePath);
$file=new UploadedFile($filePath, $fileName, $mimeTypeFile, filesize('$filePath'), null, true)
$response = $this->postJson('api/unit/'.$unit->id.'/import',['file' =>$file]);
$response->assertJsonFragment(['a'=>'b']);

其中null为上传错误常数,true为测试模式 有关Symfony UploadedFile的更多详细信息,请阅读

i have a test case:

$response = $this->postJson('api/unit/'.$unit->id.'/import',['file' =>Storage::get('file/file.xlsx')]);
    $response->assertJsonFragment(['a'=>'b']);

my controller:

public function import(Request $request, Unit $unit)
{

    $this->validate($request, [
        'file' => 'file|required_without:rows',
        'rows' => 'array|required_without:file',
        'dry_run' => 'boolean',
    ]);
    if ($request->has('rows')) {
        //
    } else {
        $results = $request->file('file');
    }

    return "ok";
}

but i think my test case is wrong,because when i dd($reuqest->file('file')) in my controller, it return null. So, how can i request file into my controller. please help

解决方案

You can use UploadFile like this:

$fileName= 'file.png';
$filePath=sys_get_temp_dir().'/'.$fileName;
$mimeTypeFile=mime_content_type($filePath);
$file=new UploadedFile($filePath, $fileName, $mimeTypeFile, filesize('$filePath'), null, true)
$response = $this->postJson('api/unit/'.$unit->id.'/import',['file' =>$file]);
$response->assertJsonFragment(['a'=>'b']);

with null is The error constant of the upload, true is test mode more detail for Symfony UploadedFile, read this

这篇关于如何将文件注入http请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆