2017-06-22 9 views
0

私はxmlファイルを扱っていますが、配列に入っている複数のxmlファイルをダウンロードしたいと思います。各配列には2つのxmlファイル(支払いと請求書)が含まれていますが、最初のxmlファイル(請求書)のみがダウンロードされるようです。2つのxmlファイルを同時にダウンロードできません(Codeigniter)

public function download(){ 
     $this->load->model('invoice_page'); 
     $data= $this->invoice_page->getCollectionTable(); 
     $data= json_decode(json_encode($data), true); 
     foreach($data as $data1){ 


     header('Content-type: text/xml'); 
     $fileName = date("Y-m-d").'invoice_xml.xml'; 
     header('Content-Disposition: attachment; filename="'.$fileName.'"'); 
     echo $data1['invoice_xml']; 

     $fileName2 = date("Y-m-d").'payment_xml.xml'; 
     header('Content-type: text/xml'); 
     header('Content-Disposition: attachment; filename="'.$fileName2.'"'); 

     echo $data1['payment_xml']; 
     } 
    } 

のData1は、その配列に、2つのXML文字列が含まれていると私は彼らにいくつかのランダムな番号と現在の日付でダウンロード2を取得する必要があります。

+0

'の出口()のような何かを行うことができます;'あなたはそれが正しい、何を意味するのか知っていますか? –

+0

@u_mulderええ、私は頭の中に何があっても試していましたが、ここから取り除きました。 –

+0

__cannot__ 1つのスクリプトで2つのファイルを1つずつダウンロードします。 –

答えて

0

同じスクリプトで複数のファイルを強制的にダウンロードすることはできません。私はより良い対処方法は、xmlファイルを圧縮してZipArchiveに圧縮し、xmlの代わりにzipファイルをダウンロードすることです。

あなたは

$doc = new DOMDocument(); 
$doc->loadXML($data1['invoice_xml']); 
$dom->save('file1.xml'); 

$doc = new DOMDocument(); 
$doc->loadXML($data1['payment_xml']); 
$dom->save('file2.xml'); 

$files = array('file1.xml', 'file2.xml'); 
$zipname = 'filetodownload.zip'; 
$zip = new ZipArchive; 
$zip->open($zipname, ZipArchive::CREATE); 
foreach ($files as $file) { 
    $zip->addFile($file); 
} 
$zip->close(); 
header('Content-Type: application/zip'); 
header('Content-disposition: attachment; filename='.$zipname); 
header('Content-Length: ' . filesize($zipname)); 
readfile($zipname); 
exit; 
+0

のようなものを使用してフロントエンドに2つのリクエストを送信する方が簡単です。既に貼り付けとテストをコピーできるコードはありますか? –

+0

これはあなたを助けますか? –

関連する問題