0

私は画像掲示板タイプのWebサイト用のSafari拡張機能を開発中です。実装したいと考えている大きな機能のひとつは、すべての画像(グローバルなページレベルの画像ではなく、投稿された画像)をダウンロードする機能です。投稿されていました。

ここにも同様の質問がありますが、問題の画像がまったく異なるサーバーでホストされているという点で、私の質問は少し異なります。私は少しブレインストーミングをしていて、JS配列にすべての画像URLを収集し、それをサーバーに送信してzipファイルに変換する(ファイルへのリンクだけでなく、ダウンロードを強制する)のが最善であると考えました。行く方法。また、ユーザーがzipをダウンロードした後にzipを削除したいと思います。

私はすでに拡張機能の大部分を終了しましたが、これは私を困惑させています。どんな助けでも大歓迎です。

どうすればこれを行うことができますか?

4

2 に答える 2

0

ダウンロードのためにサーバーに接続する拡張機能が必要ですか?それはひどい考えです!zipファイルをローカルで作成します-これは通常のJavaScriptではなく、拡張機能です-フルアクセス権があります。

とにかくこれをやりたいと仮定して、あなたが抱えている問題は何ですか?URLのリストを取得してサーバーに送信し、サーバーがURLをダウンロードして圧縮し、ユーザーに送信します。(「サーバーがそれらをダウンロードする」部分は心配する必要があります!)

どんな問題がありますか?

于 2012-07-16T18:48:27.060 に答える
0

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;
于 2012-07-16T19:40:09.573 に答える