如何在Laravel中读取FormData对象

Awa*_*ine 6 ajax file laravel laravel-5.4

我正在尝试将提交表单提交给Laravel 5控制器方法.我理解在php中,您可以定义FormData对象,将输入字段附加到对象并将其发送到服务器,您现在可以使用输入字段名称提取值.

像这样:

var form_data = new FormData();
formdata.append('file_name', 'some_file_name_from_form.png');
Run Code Online (Sandbox Code Playgroud)

当在ajax调用中form_data发送时data,我可以使用PHP在PHP中获取该文件$_FILES['file_name']['name'];.

所以我在Laravel控制器方法中尝试了相同的逻辑.我试图抓住$request对象中文件的名称但只得到null.

我的控制器方法:

public function postImage(Request $request)
{
    $file = $request->get('file_name');

    dd($file);
}
Run Code Online (Sandbox Code Playgroud)

但是当我dd整个请求时,我看到了这个奇怪的对象:

array:1 ["file_name"=> UploadedFile {#199 -test:false -originalName:"work-fitness_00255959.png"-mimeType:"image/png"-size:34215 -error:0 #hashName:null path:"/tmp"filename:"phpVodsUg"basename:"phpVodsUg"pathname:"/ tmp/phpVodsUg"extension:""realPath:"/ tmp/phpVodsUg"aTime:2017-06-04 12:42:26 mTime:2017-06 -04 12:42:26 cTime:2017-06-04 12:42:26 inode:17573243 size:34215 perms:0100600 owner:1000 group:1000 type:"file"writable:true readable:true executable:false file: true dir:false link:false}]

请问如何通过FormData()Ajax名称获取通过Ajax中的对象发送的图像?

谢谢你的帮助

San*_*esh 10

你可以这样做.

// get the `UploadedFile` object
$file = $request->file('file_name');
$file = $request->file_name;

// get the original file name
$filename = $request->file('file_name')->getClientOriginalName();
$filename = $request->file_name->getClientOriginalName();
Run Code Online (Sandbox Code Playgroud)

有关更多信息,查看文档https://laravel.com/docs/5.4/requests#retrieving-uploaded-files

上传文件中提供的api方法http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html