Php 上传文件为空Laravel 5.4
我试图使用ajax在控制器中发送文件数据,但它不起作用。 下面是代码结构 形式Php 上传文件为空Laravel 5.4,php,ajax,html,laravel,Php,Ajax,Html,Laravel,我试图使用ajax在控制器中发送文件数据,但它不起作用。 下面是代码结构 形式 <form id="contact_img" enctype="multipart/form-data"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input id="contact_image" name="contact_image" type="file" cla
<form id="contact_img" enctype="multipart/form-data">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input id="contact_image" name="contact_image" type="file" class="file">
<input type="text" class="form-control" name="testtest" id="testtest" required>
<button type="submit" class="btn-default">Save</button>
</form>
我的网络路线
路由::get('admin/upload\u contact\u img','admin_controller@contact_img_upload');
控制器
public function contact_img_upload(Request $form){
if ($form->hasFile('contact_image')){
echo $form->file('contact_image');
}else{
echo "empty";
}
echo $form->testtest;
}
只有输入测试才会显示该值。尝试使用formData()而不是序列化表单
$("#contact_img").on('submit', function(e){
e.preventDefault();
var form = new FormData(e.target)
$.ajax({
url: "{{ url('/') }}/admin/upload_contact_img",
data : form,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success: function (data) {
alert(data);
},
type:'POST'
});
});
参见示例使用
jQuery.form.js
通过AJAX提交表单。你也可以上传进度。
访问以下链接
问题在于,Ajax文件上传并不容易。您需要实现例如FileReader 查看此答案:1)在表单提交按钮中添加
id
<form id="contact_img" enctype="multipart/form-data">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input id="contact_image" name="contact_image" type="file" class="file">
<input type="text" class="form-control" name="testtest" id="testtest" required>
<button type="submit" id="submitBtn" class="btn-default">Save</button>
</form>
3) 内部控制器
public function contact_img_upload(Request $form){
{
if( $form->hasFile('image')) {
$image = $form->file('image');
//Image handling code //
}
$testtest = $form->testtest;
return response()->json(['contact_image' => $image, 'testtest' => $testtest]);
}
如果您需要一个演示项目,只需克隆此项目即可将其放在控制器文件的顶部
use Illuminate\Http\UploadedFile;
因为Request的file方法返回light\Http\UploadedFile类的一个实例,并且要对其进行操作,名称空间必须在可能的重复范围内
public function contact_img_upload(Request $form){
{
if( $form->hasFile('image')) {
$image = $form->file('image');
//Image handling code //
}
$testtest = $form->testtest;
return response()->json(['contact_image' => $image, 'testtest' => $testtest]);
}
use Illuminate\Http\UploadedFile;