您好,登錄后才能下訂單哦!
如何在php中使用mod_zip模塊對(duì)ZIP文件進(jìn)行打包?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
nginx 有一個(gè)第三方模塊,mod_zip 。同樣可以輸出 zip 包。和 X-Accel-Redirect 有點(diǎn)類(lèi)似,只需要 php 輸出相應(yīng)文件的路徑等信息,然后給一個(gè)特殊的響應(yīng)頭即可。
nginx zip 模塊使用的響應(yīng)頭是 X-Archive-Files: zip 。加上這個(gè)響應(yīng)頭,nginx zip 模塊就會(huì)處理響應(yīng)正文,完成打包輸出。
比如:
復(fù)制代碼 代碼如下:
printf("%s %d %s %s\n", $crc32, $size, $url, $path );
逐條輸出要打包的文件。
$crc32 是 16 進(jìn)制的文件 crc32 值。也可以不提供,用 “-” 代替。不過(guò)這樣就沒(méi)法用 Range 分塊下載,斷點(diǎn)續(xù)傳了。
$size 是文件大小的十進(jìn)制整數(shù)。
$url 是要打包的源地址。如果要打包一個(gè)本地文件,可以先在 nginx 中做一個(gè) internal path。
$path 是 zip 包中的路徑。
不過(guò)這樣沒(méi)法創(chuàng)建空目錄。一方面,zip 格式開(kāi)始就沒(méi)有定義空目錄,后來(lái)的標(biāo)準(zhǔn)和軟件都是通過(guò)加一個(gè) / 結(jié)尾的 0 大小文件來(lái)實(shí)現(xiàn)的。這時(shí),就需要先在 nginx 中做一個(gè) internal 的 0 大小文件,比如位于 /_0 。然后輸出
復(fù)制代碼 代碼如下:
printf("%s %d %s %s\n", '00000000', 0, '/_0', $path.'/');
看完上述內(nèi)容,你們掌握如何在php中使用mod_zip模塊對(duì)ZIP文件進(jìn)行打包的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。