You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire上传.csv文件自动转为.txt文件,该如何修复?

Livewire上传CSV文件自动转为TXT格式问题

问题描述

尝试从Excel类文件中导入数据,在使用Livewire上传.csv格式文件时,文件被自动转换为.txt格式,暂无法确认问题出自Livewire还是Laravel框架。

相关代码

文件导入模态框代码

<x-jet-modal maxWidth="sm" wire:model="showImportDialog">
    <form wire:submit.prevent="import" method="POST" enctype="multipart/form-data">
        <div>
            <div class="text-lg">Import Users</div>
        </div>
        <div>
            <input type="file" wire:model="users" name="users" id="users" />
        </div>
        <x-jet-button type="submit">Import</x-jet-button>
    </form>
</x-jet-modal>

对应Livewire组件代码

...
use WithFileUploads;

public $users;

public function import()
{
    dd($this->users); // originalName: "W4K99h75YVHSou815dV0fErWMLzZ75-metaUUNTX1VzZXJzXzIwMjEtMDktMTQgMTdfNDdfNTMuY3N2-.txt"
    $validated = $this->validate([
        'users.*' => 'required|file|mimes:xls,xlsx,csv',
    ]);

    dd($validated); // 输出结果为"[]"
}
...

排查补充信息

  • 验证前打印$this->users的结果:打印结果
  • 更新1:调用dd($this->users->getClientOriginalName())可正常输出原始文件名Users_2021-09-14 17_47_53.csv
  • 更新2:Livewire配置文件截图:Livewire配置

问题原因与解决方案

该问题是Livewire处理文件上传的默认逻辑导致,和Laravel框架无关:Livewire存储临时文件时不会保留原始文件后缀,统一采用.txt作为临时文件后缀,仅在请求属性中保留原始文件信息。你使用的mimes校验规则会读取临时文件的后缀判断类型,所以校验失败返回空数组。

修复步骤

  1. 将验证规则从mimes改为mimetypes,直接校验文件实际内容的MIME类型:
// 单文件上传校验
$validated = $this->validate([
    'users' => 'required|file|mimetypes:text/csv,text/plain,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
]);

// 多文件上传校验保留数组写法
$validated = $this->validate([
    'users.*' => 'required|file|mimetypes:text/csv,text/plain,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
]);
  1. 后续存储文件时,通过getClientOriginalName()获取原始文件名,调用storeAs()方法自定义存储的文件名和后缀即可,不会影响实际文件内容的解析。

内容的提问来源于stack exchange,提问作者Mahdi Jafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:15:01