Maison >développement back-end >tutoriel php >Manipulation de la réponse au courant simplifié dans Laravel

Manipulation de la réponse au courant simplifié dans Laravel

Johnathan Smith
Johnathan Smithoriginal
2025-03-05 16:25:12980parcourir

Simplified Stream Response Handling in Laravel

L'approche rationalisée de Laravel à la gestion des flux HTTP simplifie considérablement les téléchargements et les transferts de fichiers. Auparavant, la gestion des flux, en particulier pour les téléchargements de fichiers à partir de sources externes, a impliqué plusieurs étapes et conversions. Maintenant, la méthode resource() offre une solution concise.

Ceci est particulièrement bénéfique lors de l'enregistrement des fichiers vers le stockage de votre application. La méthode resource() élimine le besoin de fichiers temporaires et de manipulations de flux complexes.

Voici une comparaison des anciennes et nouvelles méthodes:

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

// Older, more complex approach
$response = Http::get($url);
Storage::put('file.pdf', StreamWrapper::getResource(
    $response->toPsrResponse()->getBody()
));

// New, simplified approach using resource()
Storage::put('file.pdf', Http::get($url)->resource());

Examinons un exemple pratique au sein d'un service de traitement des documents:

<?php namespace App\Services;

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use App\Exceptions\DocumentProcessingException;
use Exception;
use Illuminate\Support\Facades\Log;

class DocumentProcessor
{
    public function processRemoteDocument(string $documentUrl, string $reference)
    {
        try {
            $response = Http::timeout(30)->get($documentUrl);

            if (!$response->successful()) {
                throw new DocumentProcessingException(
                    "Document retrieval failed: {$response->status()}"
                );
            }

            // Store the original document
            $originalPath = "documents/{$reference}/original.pdf";
            Storage::put($originalPath, $response->resource());

            // Create a backup
            Storage::disk('backup')->writeStream(
                $originalPath,
                Storage::readStream($originalPath)
            );

            return [
                'reference' => $reference,
                'size' => Storage::size($originalPath),
                'path' => $originalPath
            ];
        } catch (Exception $e) {
            Log::error('Document processing error', [
                'url' => $documentUrl,
                'reference' => $reference,
                'error' => $e->getMessage()
            ]);

            throw $e;
        }
    }
}

La méthode resource() simplifie considérablement la manipulation des flux dans Laravel, entraînant des opérations de fichiers plus propres et plus efficaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn