Laravel 5.2ajax文件上传收不到文件
Laravel 5.2 ajax file upload does not receives file
我有一个 Laravel 5.2 应用程序,我尝试通过 ajax 上传一些文件,但 laravel 没有收到它们。
这是我的代码:
function uploadImages(selector){
var file_data = selector.prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
jQuery.ajax({
url: '/uploadfile/',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(php_script_response){
console.log(php_script_response);
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus);
console.log(errorThrown);
}
});
}
这是 php 部分:
public function uploadPhoto(Request $request){
$string = str_random(40);
$response = [];
$file = $request->file('file');
$response['str'] = $file;
return response()->json($response);
}
问题是,$file 是 NULL
。 (成功函数将 Object { str: "NULL" }
打印到控制台)。
我检查了在控制台的“网络”选项卡中发送的 headers,图像似乎是按加速发送的。
有人知道吗?
更新:
这是 html 表格:
<form action="" method="post" enctype="multipart/form-data">
<input type='file' id='choosePhoto' name='file'>
</form>
根据上面的代码,我了解到您遇到的问题不是 laravel 上传器,而是 jquery 片段。
在 jquery 中,您必须以不同的方式处理文件上传。
请找到 tutorial on creating a snippet to upload files via ajax/jquery here
我推荐使用这个 jquery 插件:http://malsup.com/jquery/form/#file-upload
将此添加到您的 js 中:
$('#my-form').ajaxForm({
beforeSubmit: function(formData, jqForm, options){
// just like jquery ajax
},
success: function(responseText, statusText, xhr, $form){
console.log(responseText);
},
clearForm: true //clear form after submit
});
那么在您看来:
<form id="my-form" method="POST" action="{{ URL::to('my/route') }}" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" required>
<input class="subir" type="submit" name="submit" value="Upload">
{{ csrf_field() }}
</form>
我有一个 Laravel 5.2 应用程序,我尝试通过 ajax 上传一些文件,但 laravel 没有收到它们。
这是我的代码:
function uploadImages(selector){
var file_data = selector.prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
jQuery.ajax({
url: '/uploadfile/',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(php_script_response){
console.log(php_script_response);
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus);
console.log(errorThrown);
}
});
}
这是 php 部分:
public function uploadPhoto(Request $request){
$string = str_random(40);
$response = [];
$file = $request->file('file');
$response['str'] = $file;
return response()->json($response);
}
问题是,$file 是 NULL
。 (成功函数将 Object { str: "NULL" }
打印到控制台)。
我检查了在控制台的“网络”选项卡中发送的 headers,图像似乎是按加速发送的。 有人知道吗?
更新:
这是 html 表格:
<form action="" method="post" enctype="multipart/form-data">
<input type='file' id='choosePhoto' name='file'>
</form>
根据上面的代码,我了解到您遇到的问题不是 laravel 上传器,而是 jquery 片段。 在 jquery 中,您必须以不同的方式处理文件上传。 请找到 tutorial on creating a snippet to upload files via ajax/jquery here
我推荐使用这个 jquery 插件:http://malsup.com/jquery/form/#file-upload
将此添加到您的 js 中:
$('#my-form').ajaxForm({
beforeSubmit: function(formData, jqForm, options){
// just like jquery ajax
},
success: function(responseText, statusText, xhr, $form){
console.log(responseText);
},
clearForm: true //clear form after submit
});
那么在您看来:
<form id="my-form" method="POST" action="{{ URL::to('my/route') }}" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" required>
<input class="subir" type="submit" name="submit" value="Upload">
{{ csrf_field() }}
</form>