我正在尝试将提交表单提交给Laravel 5控制器方法。我理解在php中,您可以定义FormData对象,将输入字段附加到对象并将其发送到服务器,您现在可以使用输入字段名称提取值。
像这样:
var form_data = new FormData();
formdata.append('file_name', 'some_file_name_from_form.png');
在ajax调用中form_data
作为data
发送时,我可以使用$_FILES['file_name']['name'];
在PHP中获取该文件。
所以我在Laravel控制器方法中尝试了相同的逻辑。我只是想在$request
对象中获取文件的名称,但只是为空。
我的控制器方法:
public function postImage(Request $request)
{
$file = $request->get('file_name');
dd($file);
}
但是当我dd
整个请求时,我看到了这个奇怪的对象:
数组:1 [ " FILE_NAME" => UploadedFile {#199 -test:false -originalName:" work-fitness_00255959.png" -mimeType:" image / png" -size:34215 -error:0 #hashName:null 路径:" / tmp" filename:" phpVodsUg" basename:" phpVodsUg" 路径名:" / tmp / phpVodsUg" 扩展名:"" realPath:" / tmp / phpVodsUg" 时间:2017-06-04 12:42:26 mTime:2017-06-04 12:42:26 cTime:2017-06-04 12:42:26 inode:17573243 大小:34215 烫发:0100600 拥有者:1000 组:1000 输入:" file" 可写的:真的 可读:真实 可执行文件:false file:true 迪尔:假 链接:false } ]
请问如何通过它的名称获取通过Ajax中的FormData()
对象发送的图像?
感谢您的帮助
答案 0 :(得分:8)
你可以这样做。
improvement
查看文档以获取更多信息https://laravel.com/docs/5.4/requests#retrieving-uploaded-files
上传文件http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html
上提供的api方法答案 1 :(得分:1)
下面的代码对我有用:
$("#your_form").submit(function(e){
e.preventDefault();
var form = $(this);
var url = form.attr("action");
var data = new FormData(form[0]);
$.ajax({
url: url,
type: 'POST',
data: data,
cache: false,
processData: false,
contentType : false,
success: function (data) {
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
}
});
});
我的问题是属性contentType。所以,我设置为假,它没问题!