2016-07-01 9 views
-1

PHPを使用していくつかのファイルからzipアーカイブを作成しようとしています。ただし、ファイル私のブラウザのダウンロードがpath-to-my-dirMyZip124153.zip命名され PHPを使用してダウンロードしたファイル名からファイルパスを除外する方法ZipArchive

MyZip124153.zip

$zipname = 'path/to/my/dir/' . uniqid('MyZip', true) . '.zip'; 
     $zip = new ZipArchive; 
     $zip->open($zipname, ZipArchive::CREATE); 
     foreach ($files as $file) { 
     $dl_file = file_get_contents($file); 
     $zip->addFromString(basename($file),$dl_file); 
     } 
     $zip->close(); 
     header('Content-Type: application/zip'); 
     header('Content-disposition: attachment; filename=' . $zipname); 
     header('Content-Length: ' . filesize($zipname)); 
     readfile($zipname); 
     unlink($zipname); 

それはの範囲に名前を付け、正しい場所にうまくアーカイブを作成します。

私はこれをやることを防ぐ方法がわかりません。私はこれらのファイル名にこのファイルシステム情報を埋め込まないことを好むでしょう。

ありがとうございました!

答えて

1

明らかに、ヘッダー内のファイル名としてパス文字列を使用しているので、ファイル名の中にパスを入れることは明らかです。

$new_file_name = 'myzipfile.zip'; 
header('Content-disposition: attachment; filename=' . $new_file_name); 

header('Content-disposition: attachment; filename=' . $zipname); 

のようなものに:

は、あなたの変更

関連する問題