我正在尝试将 ajax 表单提交给 Laravel 5 Controller 方法。我知道在 php 中,您可以定义一个 FormData 对象,将输入字段附加到该对象并将其发送到服务器,您现在可以使用输入字段名称提取值。
像这样:
var form_data = new FormData();
formdata.append('file_name', 'some_file_name_from_form.png');
当
form_data
发送为 data
在ajax调用中,我可以使用$_FILES['file_name']['name'];
在PHP中获取文件.所以我在 Laravel Controller 方法中尝试了同样的逻辑。我试图在
$request
中获取文件名对象,但只得到了空值。我的 Controller 方法:
public function postImage(Request $request)
{
$file = $request->get('file_name');
dd($file);
}
但是当我
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 中的对象通过它的名字?谢谢你的帮助
最佳答案
你可以这样做。
// 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();
查看文档了解更多信息 https://laravel.com/docs/5.4/requests#retrieving-uploaded-files
上传文件可用的 api 方法 http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html
关于ajax - 如何在 Laravel 中读取 FormData 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354370/