VueJs和Laravel。我无法使用Vuejs和FileReader发送Excel文件

时间:2019-02-13 18:31:57

标签: laravel vue.js

我想加载一个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

图像中的Console.log(文件)enter image description here

更新:我添加了控制器

$a = $request->excel;
dd($a);
result in : null

2 个答案:

答案 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一起添加...