En este artículo, aprenderemos cómo subir un archivo CSV en Laravel 8.x y enviar sus datos a una API REST externa. Usaremos el poderoso framework Laravel para manejar la subida del archivo y la comunicación con la API. Requisitos previos Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Laravel 8.x
- Composer
Paso 1: Configuración inicial Primero, crea un nuevo proyecto de Laravel ejecutando el siguiente comando en tu terminal:
composer create-project --prefer-dist laravel/laravel csv-upload-api
cd csv-upload-api
php artisan make:migration create_csv_data_table --create=csv_data
php artisan migrate
php artisan make:model CsvData
use App\Http\Controllers\CsvUploadController;
Route::get('/upload', [CsvUploadController::class, 'showUploadForm'])->name('upload.form');
Route::post('/upload', [CsvUploadController::class, 'upload'])->name('upload.submit');
Luego, crea un controlador llamado CsvUploadController ejecutando el siguiente comando:
php artisan make:controller CsvUploadController
<?php
namespace App\Http\Controllers;
use App\Models\CsvData;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class CsvUploadController extends Controller
{
public function showUploadForm()
{
return view('upload');
}
public function upload(Request $request)
{
// Procesa el archivo CSV y envía los datos a la API externa
}
}
<!DOCTYPE html>
<html>
<head>
<title>Subir archivo CSV</title>
</head>
<body>
<form method="POST" action="{{ route('upload.submit') }}" enctype="multipart/form-data">
@csrf
<input type="file" name="csv_file">
<button type="submit">Subir</button>
</form>
</body>
</html>
public function upload(Request $request)
{
$file = $request->file('csv_file');
// Procesar el archivo CSV y guardar los datos en la base de datos
$csvData = new CsvData();
$csvData->name = 'John Doe';
$csvData->email = 'johndoe@example.com';
$csvData->phone = '1234567890';
$csvData->save();
// Enviar los datos a la API externa utilizando la clase Http
$response = Http::post('https://api.example.com/data', [
'name' => $csvData->name,
'email' => $csvData->email,
'phone' => $csvData->phone,
]);
// Procesar la respuesta de la API externa y mostrar una confirmación al usuario
if ($response->successful()) {
// La API respondió correctamente
return back()->with('success', 'Los datos se enviaron correctamente a la API externa.');
} else {
// La API respondió con un error
return back()->with('error', 'Hubo un error al enviar los datos a la API externa.');
}
}