直播中不允许使用Laravel 405方法



由于很多天我试图在服务器中上传文件,我在实时服务器中遇到了405方法不允许错误: 这是我的观点: HTML 和 JavaScript

@extends('layouts.app')
@section('content')
form id="uploaddiamond" class="form-horizontal form-label-left" method="post" enctype="multipart/form-data">
@csrf
<div class="col-md-6">
<div class="block">
<div class="panel-body">
<div class="form-group">
<label class="col-md-3 control-label">Upload Diamond <span class="required">*</span></label>
<div class="col-md-9">
<input required="" type="file" name="result_file" id="result_file" />
</div>
</div>
<div class="btn-group pull-right">
<button class="btn btn-primary" type="submit">Submit</button>
</div>
</div>
</div>
</div>
</form>
@endsection()
@section('javascript')
<script>
$("#uploaddiamond").on("submit",function(e) {
e.preventDefault();
console.log('tst');
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name=_token]').attr('content')
}
});
var file_data = $('#result_file').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: "{{ route('diamond') }}", // point to server-side PHP script
data: form_data,
type: 'POST',
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData: false,
success: function(data) {
console.log(data);
}
});
});
</script>
@endsection()
This is my web route:
Route::get('/imageview','ImageController@index')->name('getimage');
Route::post('/postDiamond','ImageController@postDiamond')->name('diamond');
这是我的控制器:
public function index(){
return view('Image/imgupload');
}

public function postDiamond(Request $request){
dd($request->file('file'));
$supplier_name = $request->supplier_name;
$extension = $request->file('file');
$extension = $request->file('file')->getClientOriginalExtension(); // getting excel extension
$dir = 'assets/files/';
$filename = uniqid().'_'.time().'_'.date('Ymd').'.'.$extension;
$request->file('file')->move($dir, $filename);
}

我不知道为什么这段代码不起作用,因为这段代码在本地主机中有效,但在 Linux 托管中不起作用: 有人可以帮忙吗,我在版本上犯了一个错误 服务器当前PHP版本:7.3.17 拉拉维尔 PHP 版本:7.1.10

这是我的服务器错误图像,请检查: 在此处输入图像描述

在此处输入图像描述

好吧,我刚刚在实时服务器上测试了此代码,它工作正常。如果此代码仍然不适合您,那么您需要检查服务器端某些文件的权限,例如web.php等...

$(document).on('click','#submit_button', function(e){ //#submit_button id on submit button
e.preventDefault();
var formData = new FormData(this.form);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
}
});
$.ajax({
method: 'POST',
url: '{{ route("diamond") }}',
cache: false,
contentType: false,
processData: false,
data: formData,
success: function(data){
console.log(data);
},
error: function(data){
console.log(data);
}
});
});

请务必从<form>标记中移除@csrf。在控制器中只需dd(request()->all());,看看你得到了什么

最新更新