laravel 文件上传(laravel导入excel)

2025-03-24 12

《laravel 文件上传(laravel导入excel)》

解决方案简述

在Laravel项目中实现文件上传,尤其是Excel文件的导入功能,可以通过使用第三方库如maatwebsite/excel来简化操作。它能方便地读取、写入和处理Excel文件,并且与Laravel框架无缝集成。

一、安装依赖

在项目根目录下通过Composer安装maatwebsite/excel库。
php
composer require "maatwebsite/excel:^3.1"

安装完成后,需要在config/app.php中添加服务提供者(如果是自动发现则不需要):
```php
'providers' => [
// ...
MaatwebsiteExcelExcelServiceProvider::class,
],

'aliases' => [
// ...
'Excel' => MaatwebsiteExcelFacadesExcel::class,
]
```

二、创建文件上传表单

在视图文件中创建一个简单的文件上传表单,例如在resources/views/import.blade.php中:
```html

@csrf

</p>

<h2><h2>三、定义路由和控制器逻辑</h2></h2>

<h3>1. 路由</h3>

<p>在<code>web.php中定义路由:
php
Route::post('/import-excel', [ImportController::class, 'import'])->name('import.excel');

2. 控制器

创建ImportController,在其中编写导入逻辑: ```php namespace AppHttpControllers;

use IlluminateHttpRequest; use MaatwebsiteExcelFacadesExcel; use AppImportsUsersImport;

class ImportController extends Controller { public function import(Request $request) { // 验证文件类型等 $this->validate($request, [ 'file' => 'required|mimes:xlsx,xls' ]);

    // 导入Excel文件
    Excel::import(new UsersImport(),$request->file('file'));

    return back()->with('success','导入成功!');
}

}

四、创建数据映射类

创建app/Imports/UsersImport.php用于定义如何将Excel中的数据映射到模型或其他结构中:
```php
namespace AppImports;

use AppModelsUser;
use MaatwebsiteExcelConcernsToModel;

class UsersImport implements ToModel
{
/**
* @param array $row
*
* @return IlluminateDatabaseEloquentModel|null
*/
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => bcrypt($row[2]),
]);
}
}
```

除了上述方式,还可以考虑其他思路,比如在导入时对Excel文件进行更复杂的验证,或者将导入的数据先存储在一个临时表中,然后再根据业务逻辑进行进一步处理等。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载