【问题标题】:Vue / Laravel / Vuetify - Append multiple files inside an arrayVue / Laravel / Vuetify - 在数组中附加多个文件
【发布时间】:2020-09-10 23:18:26
【问题描述】:

我有一个数据数组(父),其中每个元素都有自己的row.files 数组(子)。提交表单时,每个父数据数组只捕获一个子文件。

模板

<v-form  ref="form" @submit.prevent="save()">
  <v-btn type="submit" >Submit</v-btn>
  <v-col cols="3" v-for="row in chunk" :key="row.id">
    <v-file-input
      v-model="row.files"
      counter
      multiple
      small-chips
    >
    </v-file-input>
  </v-col>
</v-form>

 save() {
   for( let i = 0; i < this.rows.length; i++ ) {
     let formData = new FormData()
       if(this.rows[i].files) {
         for( let j = 0; j < this.rows[i].files.length; j++ ) {
           formData.append('file', this.rows[i].files[j])
         }
       }
      axios.post('/api/performance', formData, { headers: { 'Content-Type': 'multipart/form-data' }})
    }
 }

控制器

public function store(Request $request)
  {
    if($request->file('file')) {
      $file = $request->file;
      $filename = $file->getClientOriginalName();
      $path = hash( 'sha256', time());
      if(Storage::disk('employee_objective')->put($path.'/'.$filename, File::get($file))) {
        $input['employee_objective_kpa_id'] = $objectiveKPA->id;
        $input['filename'] = $filename;
        $input['mime'] = $file->getClientMimeType();
        $input['path'] = $path;
        $input['size'] = $file->getClientSize();
        EmployeeObjectiveFile::create($input);
      }

    }
  }

如果上传是独立的而不是在数组中,它会起作用。

for( let i = 0; i < this.files.length; i++ ) {
  let formData = new FormData();
  formData.append('file', this.files[i]);

  axios.post('/api/performance', formData, { headers: { 'Content-Type': 'multipart/form-data' }})
    })
  }

【问题讨论】:

    标签: laravel vue.js vuetify.js


    【解决方案1】:

    追加到formData时,如果有多个文件,应在files key后面追加[]

    formData.append('file[]', this.rows[i].files[j])
    

    所以它附加到文件数组中,否则您将在每次迭代时重写 file 属性。

    然后在后端,您可以像这样访问文件:

    $files = $request->file('file');
    foreach ($files as $file) {
    
        // Do the work for each file
    
    }
    

    【讨论】:

    • 非常感谢!我不知道 append 也可以用[ ] 声明
    猜你喜欢
    • 2021-03-27
    • 2020-06-06
    • 2019-12-07
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2021-05-17
    • 2020-09-11
    • 2021-11-06
    相关资源
    最近更新 更多