iT邦幫忙

0

請問有關在Web Server端直接解壓縮壓縮檔,將解壓縮內容回傳給用戶端

各位好:
請教一個問題,請問有甚麼方式可以在Web Server端
(不限Apache , IIS)
直接將壓縮檔解壓縮,將解壓縮的內容回傳給用戶端
希望做到的是把ZIP檔中的圖片直接在Web Server端解壓縮
並將解壓縮後的圖片回傳到用戶端的Browser 上
這樣可以讓用戶端不用下載整包ZIP檔

還請各位提供建議 謝謝

看更多先前的討論...收起先前的討論...
這個要求很不實際。
佔server空間,
又浪費傳輸的時間。

基本上不可能。
就web server而言,
一個連結只能回應一個輸出,
才省略掉使用者要一個一個點下載的麻煩。

技術上好像是有可能,
類似是點一個連結,
結果跳出一堆令人討厭的廣告頁面的功能。
這種彈跳視窗的方法,
令人討厭,而瀏覽器預設都會擋掉。

如果解壓裡有很多檔案,
使用者有耐心一個一個點來存檔?
除非使用者是設定瀏覽器問都不問就直接存檔。
edras iT邦新手 4 級 ‧ 2013-10-07 11:55:29 檢舉
您好:
這是主管要求的
目的就是為了節省用戶端這邊的下載流量
如果用戶只是想看這個ZIP中的特定幾張圖片
那是否可以直接在Web Server 端解壓縮
回傳用戶端用的那些圖片即可 ?

是否可以從程式這邊來執行會比較好?

謝謝
wiseguy iT邦超人 1 級 ‧ 2013-10-07 13:40:45 檢舉
主管的要求有時總是無腦而荒謬的。
這需求乍看之下好像很聰明,但仔細一看就知道,既沒顧及解壓縮也需要主機成本,更沒顧慮效率與安全問題。十人二十人都在主機這麼做,或多按幾次看圖,就操掛主機了,還做什麼服務呢?有比較好嗎?
edras iT邦新手 4 級 ‧ 2013-10-07 13:56:47 檢舉
您好:
這就是我們做為下屬的難處
所以我希望有個可以明確告知不可行的方式
謝謝
不然就是用相反的方式,
所有檔案在server上不壓縮,
這樣就達到可以一個一個各別下載,
若要整包下載,
server才把所指定的檔案包成臨時的壓縮檔供下載。
當然這部份需要網頁程式來進行。

另外要評估的是:
你所有檔案解開的總和,
跟整個壓縮檔的大小,
差別有多大?
如果差別不大,
那就全都解開放在server。
像jpeg檔已是壓縮過的,
再怎麼zip,也省不了多少空間。

不壓縮的話,
確實是可以一個一個下載,
對於想要全下載的人,
其實只要每個檔案的 url 都是可見的,
有心下載的根本不是問題,
除非每一個連結下載都是靠網頁程式吐出來,
乾脆就都不要壓縮檔,
有使用者抱怨的話,
再反應給上司吧!

1 個回答

12
wiseguy
iT邦超人 1 級 ‧ 2013-10-01 13:40:30

edras提到:
希望做到的是把ZIP檔中的圖片直接在Web Server端解壓縮
並將解壓縮後的圖片回傳到用戶端的Browser 上
這樣可以讓用戶端不用下載整包ZIP檔

如果一次只想看壓縮包裡的其中一張圖,可以做到。假設壓縮檔是 test.zip,想看其中的 02.jpg,php 程式如下:

<pre class="c" name="code"><?php
	header('Content-Type: image/jpg');
	$handle =popen('/usr/bin/unzip -p /somewhere/test.zip 02.jpg', 'r');
	while (($buffer = fgets($handle, 4096)) !== false) {
		echo $buffer;
	}
	pclose($handle);
?>

我要發表回答

立即登入回答