РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
796 of 1392 menu

Метод writeStream

Метод writeStream применяется к экземпляру диска фасада Storage и позволяет записать содержимое файла из ресурса потока (например, из открытого файла или PHP-потока) в указанное место файловой system. Первым параметром передаётся путь к файлу относительно корня диска, вторым - ресурс потока (stream resource). Третий параметр - опциональный массив опций, например, для указания видимости. Метод возвращает true при успешной записи или false в случае ошибки.

Синтаксис

<?php use Illuminate\Support\Facades\Storage; Storage::disk($disk)->writeStream($path, $resource, $options); ?>

Пример

Давайте запишем содержимое локального файла в хранилище с помощью потока:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; class FileController extends Controller { public function store() { $sourcePath = '/tmp/source.txt'; $destPath = 'uploads/destination.txt'; $sourceStream = fopen($sourcePath, 'r'); $res = Storage::disk('local')->writeStream($destPath, $sourceStream); fclose($sourceStream); if ($res) { echo "File successfully written"; } else { echo "Failed to write file"; } } } ?>

Результат выполнения кода:

"File successfully written"

Пример

Давайте запишем данные из PHP-потока в файл с указанием публичной видимости:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; class FileController extends Controller { public function storePublic() { $data = "This is a test content"; $stream = fopen('php://memory', 'r+'); fwrite($stream, $data); rewind($stream); $res = Storage::disk('public')->writeStream( 'public/test.txt', $stream, ['visibility' => 'public'] ); fclose($stream); if ($res) { echo "Public file successfully written"; } else { echo "Failed to write public file"; } } } ?>

Результат выполнения кода:

"Public file successfully written"

Пример

Давайте запишем большой файл по частям с использованием потока:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Storage; class FileController extends Controller { public function storeLarge() { $url = 'https://example.com/large-file.zip'; $remoteStream = fopen($url, 'r'); if ($remoteStream === false) { echo "Failed to open remote file"; return; } $res = Storage::disk('local')->writeStream( 'large-file.zip', $remoteStream ); fclose($remoteStream); if ($res) { echo "Large file successfully written"; } else { echo "Failed to write large file"; } } } ?>

Результат выполнения кода:

"Large file successfully written"

Смотрите также

  • метод readStream,
    который читает файл как поток
  • метод put,
    который записывает файл из строки
  • метод putFile,
    который сохраняет загруженный файл
  • метод setVisibility,
    который устанавливает видимость файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить