簡體   English   中英

使用JavaScript和PHP下載圖像文件並返回zip文件

[英]Using JavaScript and PHP to download image files and return a zip file

我正在為圖像板型網站開發Safari擴展,而我希望實現的更大功能之一就是能夠下載所有圖像(已發布的圖像,而不是全局頁面級圖像)的功能。已發布。

這里已經存在類似的問題,但是我的問題有所不同,這些問題的圖像托管在完全不同的服務器上。 我一直在集思廣益,發現將所有圖像URL收集到JS數組中,然后將其發送到服務器以轉換為zip文件(強制下載,而不僅僅是鏈接到文件)是最好的。要走的路。 我還希望用戶下載后將其刪除。

我已經完成了大多數擴展功能,但是這一功能讓我很沮喪。 任何幫助將不勝感激。

我將如何去做呢?

您是否希望擴展程序與您的服務器聯系以進行下載? 這是一個可怕的主意! 在本地制作zip文件-這不是常規的javascript,而是擴展名-您具有完全訪問權限。

無論如何,假設您仍然想這樣做,那么您遇到的麻煩是什么? 您將獲得URL列表,將其發送到服務器,服務器將其下載,壓縮並發送給用戶。 (“您的服務器下載它們”部分應該讓您擔心!)

你有什么問題

您可以使用PHP的ZipArchive類制作ZIP,然后將其流式傳輸到瀏覽器。

<?php
// Create temp zip file
$zip = new ZipArchive;
$temp = tempnam(sys_get_temp_dir(), 'zip');
$zip->open($temp);

// Add files
$zip->addFromString('file.jpg', file_get_contents('http://path/to/file.jpg'));
$zip->addFile('/this/is/my/file.txt');

// Write temp file
$zip->close();

// Stream file to browser
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=myFile.zip');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($temp));

readfile($temp);

unlink($temp);
exit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM