1

我需要使用 FTP 从其他主机(子域)中的文件夹创建 ZIP 文件。

我需要从 FTP 获取下载链接。

$id = 1;
$zip = new ZipArchive;
$fileName = 'myNewFile.zip';

if ($zip->open(storage_path($fileName), ZipArchive::CREATE) === TRUE) {

    $path = storage_path('/series/sound/' . $id);
    $files = Storage::disk('ftp')->files($path);

    foreach ($files as $key => $value) {

        $relativeNameInZipFile = basename($value);
        $zip->addFile($value, $relativeNameInZipFile);
    }
    $zip->close();
}
return response()->download(storage_path($fileName));
4

1 回答 1

1

您必须将文件从 FTP 下载到网络服务器,才能将文件添加到您在网络服务器上创建的 ZIP 文件中。

我不知道 Lavarel,但应该这样做:

$contents = Storage::disk('ftp')->get($value);
$zip->addFromString($contents, $relativeNameInZipFile);

这会将文件下载到网络服务器内存。如果文件太大,这可能不起作用。在这种情况下,您必须将它们下载到 Web 服务器上的临时文件中。

于 2021-06-10T05:22:56.250 回答