我正在使用laravel 5.我已经使用以下代码将json发布到我的控制器。但我无法通过这种方式上传文件。
e.preventDefault();
$.ajax({
type: 'POST',
cache: false,
dataType: 'JSON',
url: 'tasks',
data: $('#my_form').serialize(),
success: function(data) {
console.log(data);
},
});
我有以下html代码来上传文件。
<input type="text" name="name" value="" />
<input type="text" name="name" value="" />
<input type="file" class="form-control" name="documents[]" multiple>
如何在laravel中使用json发送文件?我做了很多搜索,但我无法得到适当的解决方案
答案 0 :(得分:1)
将此作为您的代码:
e.preventDefault();
var mydata = new FormData($('#my_form')[0]);
$.ajax({
type: 'POST',
cache: false,
dataType: 'JSON',
url: 'tasks',
data: mydata,
processData: false,
contentType: flase
success: function(data) {
console.log(data);
},
});
请注意,这不适用于某些旧版浏览器(如IE 9或更早版本),因此您可能需要禁用此功能以防止错误日志过载,我会向用户提供自定义消息,说明旧版浏览器禁用该功能使用
if(typeof FormData !== 'undefined'){
var formdata = new FormData($("#documentform")[0]);
}
else{
$("#errormsg").val("upload feature is disabled in this browser version");
return false;
}
答案 1 :(得分:0)
标准的jquery ajax不直接支持文件的发送。要做到这一点,您基本上也需要使用FormData
对象而不是标准的js来进行post参数集合。
您还需要在ajax选项中禁用2个参数:
processData: false,
contentType: false,
防止jquery干扰FormData对象。