我想加载一个Excel文件,将其与axios一起发送到Controller和Maatwebsite \ Excel以进行导入。
当我从刀片服务器使用Php时,Controller中的导入部分正在工作,从Vuejs组件发送时出现问题。我无法读取Excel文件。或也许我无法在Controller中阅读它。
这是我的代码:
<template>
<input type="file" @change="checkFile" />
<button @click="importExcel()">Import File</button>
</template>
<script>
//In method
checkFile(e) {
var files = e.target.files || e.dataTransfer.files;
console.log('#', files); // The file is in console
if (!files.length)
return;
this.createFile(files[0]);
},
createFile(file) {
var reader = new FileReader();
var vm = this;
reader.readAsDataURL(file)
vm.ex.excel=file; // my ex.excel object contain File
},
importExcel: function () {
var formData = new FormData();
formData.append("file", this.ex.excel);
axios.post('/importExcel', formData)
},
</script>
所以在Controller中,当我使用php(正在工作)时,我会使用此代码
public function importExcel(Request $request)
{
if($request->hasFile('import_file')){
Excel::import(new UsersImport, request()->file('import_file'));
}
return back();
}
当我为axios尝试此代码时。我有一个错误:
public function importExcel(Request $request)
{
Excel::import(new UsersImport, $request->excel);
return back();
}
错误:无法检测到ReaderType或WriterType
更新:我添加了控制器
$a = $request->excel;
dd($a);
result in : null
答案 0 :(得分:2)
<template>
<input type="file" ref="file" @change="checkFile" />
<button @click="importExcel()">Import File</button>
</template>
<script>
//In method
{
...
createFile(file) {
this.ex.excel = this.$refs.file.target.value.files[0]
}
...
}
</script>
<?php
...
public function importExcel(Request $request)
{
Excel::import(new UsersImport, $request->file('file'));
return back();
}
...
答案 1 :(得分:0)
看起来缺少mime类型,请尝试将mime类型与HTTP POST一起添加...