Laravel Herd环境中上传Excel文件出现“无法创建临时文件”错误的排查求助
Laravel Herd环境中上传Excel文件出现“无法创建临时文件”错误的排查求助
大家好,我现在在Laravel Herd环境下开发Excel批量导入功能,遇到了一个棘手的问题,想请社区的朋友们帮忙排查一下。
我的技术栈
- Laravel Herd
- Laravel v12.0
- PHP v8.2.28
- maatwebsite/excel v3.1(Laravel Excel)
- Postman
- Windows 10 操作系统
我要实现的功能
我想通过Postman发送一个包含.xlsx格式文件的POST请求,后端用maatwebsite/excel包解析这个文件内容,批量创建Alumni模型的数据库记录。
遇到的问题
当我用Postman以form-data形式上传Excel文件并请求导入接口时,直接抛出了这个错误:
Warning: File upload error - unable to create a temporary file in Unknown on line 0
我的代码实现
路由配置(routes/api.php)
Route::controller(AlumniController::class)->group(function () { // 其他业务路由... Route::post('/alumnis/import', 'importExcel'); // Excel导入专用接口 });
控制器代码(app/Http/Controllers/AlumniController.php)
use Illuminate\Http\Request; use App\Imports\AlumnisImport; use Maatwebsite\Excel\Facades\Excel; class AlumniController extends Controller { // 其他控制器方法... public function importExcel() { try { Excel::import(new AlumnisImport, request()->file('alumni_excel')); } catch (\Throwable $th) { dd($th); } } }
Excel导入逻辑类(app/Imports/AlumnisImport.php)
use App\Models\Alumni; use App\Models\Jurusan; use Maatwebsite\Excel\Concerns\ToModel; class AlumnisImport implements ToModel { /** * @param array $row * * @return \Illuminate\Database\Eloquent\Model|null */ public function model(array $row) { $jurusan = Jurusan::firstOrCreate( ['nama' => $row['nama_jurusan']], ['nama' => $row['nama_jurusan']] ); return new Alumni([ 'nama' => $row['nama'], 'tgl_lahir' => $row['tgl_lahir'], 'tahun_mulai' => $row['tahun_mulai'], 'tahun_lulus' => $row['tahun_lulus'], 'no_tlp' => $row['no_tlp'], 'email' => $row['email'], 'password' => isset($row['password']) ? $row['password'] : null, 'alamat' => $row['alamat'], 'tempat_kerja' => $row['tempat_kerja'] ?? null, 'jabatan_kerja' => $row['jabatan_kerja'] ?? null, 'tempat_kuliah' => $row['tempat_kuliah'] ?? null, 'prodi_kuliah' => $row['prodi_kuliah'] ?? null, 'kesesuaian_kerja' => isset($row['kesesuaian_kerja']) ? filter_var($row['kesesuaian_kerja'], FILTER_VALIDATE_BOOLEAN) : null, 'kesesuaian_kuliah' => isset($row['kesesuaian_kuliah']) ? filter_var($row['kesesuaian_kuliah'], FILTER_VALIDATE_BOOLEAN) : null, 'photo' => $row['photo'] ?? null, 'jurusan_id' => $jurusan->id, ]); } }
我的疑问
- 这个“无法创建临时文件”的错误,会不会和Laravel Herd的默认配置有关?
- 除了Herd本身,我还应该检查哪些系统权限、PHP配置或者代码细节?
内容来源于stack exchange
相关产品推荐
相关产品推荐

