如何在Laravel项目中gzip文件夹

时间:2018-11-15 17:16:39

标签: php laravel laravel-5 gzip archive

我想将文件夹及其在Laravel项目中的内容压缩到具有最高压缩级别的gzip存档中。

from tkinter import Tk, Frame, Menu, Checkbutton, Text, TOP, BOTH, X, N, LEFT, BooleanVar
from tkinter.ttk import Frame, Label, Entry
import glob

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()
        #self.display_srv()

    def initUI(self):

        self.master.title("Submenu")

        menubar = Menu(self.master)
        self.master.config(menu=menubar)

        fileMenu = Menu(menubar)

        submenu = Menu(fileMenu)
        submenu.add_command(label="lst1", command=self.onDisplay)
        submenu.add_command(label="lst2")
        submenu.add_command(label="lst3")
        fileMenu.add_cascade(label='Listing', menu=submenu, underline=0)

        fileMenu.add_separator()

        fileMenu.add_command(label="Exit", underline=0, command=self.onExit)
        menubar.add_cascade(label="File", underline=0, menu=fileMenu)
    def onDisplay(self):
        self.master.title("display it")
        self.pack(fill=BOTH, expand=True)
        frame1 = Frame(self)
        frame1.pack(fill=X)
        path = '/root/liste/*.txt'
        files=glob.glob(path)
        count = 0
        for file in files:
            with open(file, 'r') as lst_file:
                for item in lst_file:
                    cb = Checkbutton(frame1, text=item.rstrip())
                    cb.grid(row=count//10, column=count%10)
                    count += 1

    def onClick(self):
        if self.var.get() == True:
            self.master.title("Checkbutton")
        else:
            self.master.title("")

    def onExit(self):

        self.quit()

def main():

    root = Tk()
    root.geometry("850x550+300+300")
    app = Example()
    root.mainloop()

if __name__ == '__main__':
    main()

这并不意味着通过HTTP传输,因此请不要与服务器响应gzip压缩混淆。

我只想要一个档案,但没有找到Laravel是否具有用于此目的的任何工具,任何想法的信息?

2 个答案:

答案 0 :(得分:1)

对我来说,这似乎不是Laravel的特定问题。对于普通的zip压缩,有可用的Laravel软件包(即zanysoft/laravel-zip),但是对于gzip,您可能想看看this answer。对我来说,它看起来并不需要自己的工作包。

顺便说一句,您会使用storage_path('myFolder')来支持storage_path().'myFolder'。这样可以正确连接路径。

答案 1 :(得分:1)

这是为您提供的帮助功能。

if (!function_exists('gzip')) {
    function gzip($filename, $disk = 'local', $delete_original = false)
    {
        $disk = Storage::disk($disk);
        $data = $disk->get($filename);
        $out_file = "$filename.gz";

        $gzdata = gzencode($data, 9);
        $disk->put($out_file, $gzdata);
        $fp = fopen($disk->path($out_file), "w");
        $result = fwrite($fp, $gzdata);
        fclose($fp);

        if ($result && $delete_original) {
            $disk->delete($filename);
        }

        return $result > 0;

    }
}

在laravel 7.x上测试并为我工作。只需确保在计算机上启用了gzip压缩即可。

enter image description here