如何使用 Storage 将文件作为资源获取?
How to get file as a resource with Storage?
我正在尝试使用 flock 函数锁定文件,但我无法执行此操作。我使用 Laravel 8 和存储 Class。
代码如下:
$disk = Storage::disk('communication');
$file_name = 'received.json';
$file_exists = $disk->exists($file_name);
if($file_exists){
flock($disk->get($file_name), LOCK_EX);
...
}
我遇到的问题是,当我在文件路径上调用 get() 函数时,它 returns 文件的内容(字符串),这会导致以下错误:
flock() expects parameter 1 to be resource, string given
我需要知道如何获取文件作为资源而不是文件的内容。
有人可以帮助我并告诉我该怎么做吗?
非常感谢您。
可以使用Storage::readStream()
方法
if($file_exists){
$stream=Storage::disk('communication')->readStream($file_name);
flock($stream, LOCK_EX);
}
根据 php 文档
flock(resource $stream, int $operation, int &$would_block = null): bool
First param needed stream.flock() allows you to perform a simple
reader/writer model which can be used on virtually every platform
(including most Unix derivatives and even Windows).
我正在尝试使用 flock 函数锁定文件,但我无法执行此操作。我使用 Laravel 8 和存储 Class。
代码如下:
$disk = Storage::disk('communication');
$file_name = 'received.json';
$file_exists = $disk->exists($file_name);
if($file_exists){
flock($disk->get($file_name), LOCK_EX);
...
}
我遇到的问题是,当我在文件路径上调用 get() 函数时,它 returns 文件的内容(字符串),这会导致以下错误:
flock() expects parameter 1 to be resource, string given
我需要知道如何获取文件作为资源而不是文件的内容。 有人可以帮助我并告诉我该怎么做吗?
非常感谢您。
可以使用Storage::readStream()
方法
if($file_exists){
$stream=Storage::disk('communication')->readStream($file_name);
flock($stream, LOCK_EX);
}
根据 php 文档
flock(resource $stream, int $operation, int &$would_block = null): bool
First param needed stream.flock() allows you to perform a simple reader/writer model which can be used on virtually every platform (including most Unix derivatives and even Windows).