Laravel - 如何捕获 Ajax 请求负载数据?
Laravel - How to capture Ajax Request Payload Data?
不是重复问题!!!
这是我的代码,使用 Laravel 5.4。
.blade.php 文件中的表格:
<form id="read-data-form" name="form" method="post" enctype="multipart/form-data" class="form-horizontal">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input name="comCode" id="comCode" type="hidden" value=""/>
<label><span class="text-danger">*</span> Upload File :</label>
<input name="file" id="fileToUpload" type="file" accept="text/*" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6 ">
<div class="text-right">
<button type="submit" class="btn operations-btn btn-default" id="upload">Upload</button>
<button type="button" class="btn operations-btn btn-default" id="stop">Stop</button>
</div>
</div>
</div>
</form>
Ajax-request 在 .js 文件中:
$("form #read-data-form").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
var promise = $.ajax({
url: 'read_data/file/check',
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
encode: true
});
promise.done(function(response){
});
promise.fail(function(error){
});
promise.always(function(){
});
}
浏览器控制台 > 网络 > Headers > 请求负载:
web.php 文件中的路由:
Route::post('read_data/file/check', 'ReadDataController@checkFile');
ReadDataController.php 文件中的 checkFile() 方法:
public function checkFile(Request $request)
{
$comCode = trim($request->comCode);
$file = $request->file('file');
dd($file);
}
浏览器控制台 > 网络 > 预览 > 请求负载:
dd() 的输出是这样的。
问题:
在没有 ajax 请求的情况下,无法以正常 'multipart/form-data' 形式捕获文件。
好的。终于有高人给的解决方法了
删除了这段代码:
$file = $request->file('file');
添加了以下代码:
$uploadDirPath = 'C:/uploaded_files/';
$uploadFile = "moved_uploded_file.txt";
$request->file('file')->move($uploadDirPath, $uploadFile);
$uploaded_file = $uploadDirPath.$uploadFile;
不是重复问题!!!
这是我的代码,使用 Laravel 5.4。
.blade.php 文件中的表格:
<form id="read-data-form" name="form" method="post" enctype="multipart/form-data" class="form-horizontal">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input name="comCode" id="comCode" type="hidden" value=""/>
<label><span class="text-danger">*</span> Upload File :</label>
<input name="file" id="fileToUpload" type="file" accept="text/*" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6 ">
<div class="text-right">
<button type="submit" class="btn operations-btn btn-default" id="upload">Upload</button>
<button type="button" class="btn operations-btn btn-default" id="stop">Stop</button>
</div>
</div>
</div>
</form>
Ajax-request 在 .js 文件中:
$("form #read-data-form").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
var promise = $.ajax({
url: 'read_data/file/check',
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
encode: true
});
promise.done(function(response){
});
promise.fail(function(error){
});
promise.always(function(){
});
}
浏览器控制台 > 网络 > Headers > 请求负载:
web.php 文件中的路由:
Route::post('read_data/file/check', 'ReadDataController@checkFile');
ReadDataController.php 文件中的 checkFile() 方法:
public function checkFile(Request $request)
{
$comCode = trim($request->comCode);
$file = $request->file('file');
dd($file);
}
浏览器控制台 > 网络 > 预览 > 请求负载:
dd() 的输出是这样的。
问题:
在没有 ajax 请求的情况下,无法以正常 'multipart/form-data' 形式捕获文件。
好的。终于有高人给的解决方法了
删除了这段代码:
$file = $request->file('file');
添加了以下代码:
$uploadDirPath = 'C:/uploaded_files/';
$uploadFile = "moved_uploded_file.txt";
$request->file('file')->move($uploadDirPath, $uploadFile);
$uploaded_file = $uploadDirPath.$uploadFile;