如何压缩本地文件夹并下载?

时间:2019-09-01 23:02:11

标签: javascript laravel laravel-5 jszip

我需要压缩本地文件夹以便用户下载它,该文件夹是一个包含子文件夹和图像的小型网页。

我需要做的是:

  1. 创建一个文本文件(我已经有这个文件了)
  2. 用我已经创建的文本文件压缩我想要的文件夹(这是我被卡住的地方)

我尝试使用jszip-utils,但无法正常工作。

function descargaPlantilla(){
    let zip = new JSZip();
     var filename = "imagenes.html";

    var blob = new Blob([result], {
        type: "text/plain;charset=utf-8"
    });

    saveAs(blob, filename);  


    SZipUtils.getBinaryContent("/Users/ricardowallacelimon/E4", function (err, data) {
        if (err) {
            throw err; // or handle the error
        }
        zip.file("/Users/ricardowallacelimon/E4", data, { binary: true });
    });




}

我得到这些错误:

TypeError: global.JSZipUtils is undefinedjszip-utils-ie.js:36:1ReferenceError: SZipUtils is not defined4 cenidet.js:180:5

ReferenceError: SZipUtils is not defined

1 个答案:

答案 0 :(得分:0)

如果您使用的是Laravel 5,则可以使用new ZipArchive。下面的示例:

private function packIntoZip(Logo $logo, array $files)
{
    $userLogoDir = resource_path('prepared-zip-files/' . $logo->user_id);

    $zipFilePath = $userLogoDir . '/zip-file';
    $this->createFolderIfNotExisting($zipFilePath);

    $zip          = new ZipArchive();
    $zipFileFinal = $zipFilePath . '/wiz_logo.zip';
    $zip->open($zipFileFinal, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);

    foreach ($files as $file) {
        $zip->addFile($file, basename($file));
    }

    $zip->addFile($this->informationPdfBasic, basename($this->informationPdfBasic));

    $zip->close();

    return $zipFileFinal;
}

然后在控制器中:

public function show(Logo $logo)
{
    $this->authorize('view', $logo);

    $logoFilesDownloader = new LogoFilesDownloader();
    $file = $logoFilesDownloader->prepareZip($logo);

    return Response::download($file);
}

希望它会有所帮助!编码愉快:)