if(isset($_REQUEST['create_all']))
{
$app_id = $_REQUEST['app'];
$fullpath = array();
$dir = dirname(__FILE__);
foreach($language_array as $key_lang=>$name_lang)
{
$path = $dir."/uploaded_xml/".$app_id."/";
if(!is_dir($path))
{
mkdir($path,0777);
chmod($path,0755);
}
$QUERY=mysql_query("select a.process_flag,a.field_id,a.field_name,a.xml_status,b.*,c.process_flag,b.lang_id from app_lang_fieldmaster_new a left join app_lang_translatetxt_new b on a.field_id=b.field_id left join app_lang_user_status c on a.field_id=c.field_id left join app_wise_lang_fields d on a.field_id=d.field_id where a.process_flag='0' and c.process_flag='6' and b.lang_id='".$key_lang."' and a.xml_status='1' and a.module_master_id='1' and d.app_id='".$app_id."' group by 2",$cont);
//create the xml document
$xmlDoc = new DOMDocument("1.0", "UTF-8");
//create the root element
$root = $xmlDoc->appendChild(
$xmlDoc->createElement("resources"));
while($row=mysql_fetch_object($QUERY))
{
if($key_lang==9)
{
$xml_string = $xmlDoc->createElement( "string",trim($row->translate," "));
$xml_string->setAttribute( "name",$row->field_name);
$root->appendChild($xml_string);
}
else
{
$xml_string = $xmlDoc->createElement( "string",trim(base64_decode($row->translate)," "));
$xml_string->setAttribute( "name",$row->field_name );
$root->appendChild($xml_string);
}
}
header("content-type: text/plain; charset=ISO-8859-15");
//make the output pretty
$xmlDoc->formatOutput = true;
$string = $xmlDoc->saveXML();
$handle = fopen($path.$name_lang.".xml","w");
fwrite($handle,$string);
fclose($handle);
// $string = $xmlDoc->save($path.$name_lang.".xml");
$fullpath[$key_lang] = $path.$name_lang.".xml";
}
ob_clean();
flush();
//zip file creation
$zip = new ZipArchive();
//zip file name
$FilePath = $app_id.".zip";
$full_path_zip = 'https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$FilePath;
//check if file exists if yes then delete
if(file_exists(dirname(__FILE__)."/uploaded_xml/".$FilePath))
{
unlink (dirname(__FILE__)."/uploaded_xml/".$FilePath);
}
//open zip file to add files to zip file
if ($zip->open(dirname(__FILE__)."/uploaded_xml/".$FilePath, ZIPARCHIVE::CREATE) != TRUE)
{
die ("Could not open archive");
}
//$zip->addFile("file_path","file_name");
// loop through each file
foreach($language_array as $key=>$name)
{
//add files to zip
$zip->addFile($fullpath[$key],$name.".xml");
}
// close and save archive
$zip->close();
// header_remove();
echo $full_path_zip;
ob_clean();
flush();
$filename = dirname(__FILE__)."/uploaded_xml/".$FilePath;
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$filename.'"');
// echo dirname(__FILE__)."/uploaded_xml/".$FilePath;
str_replace(".php",".zip",$filename);
$file_content = file_get_contents($filename); // To download the ZIP file
print($file_content);
}
i am creating a zip file which contains some xml files from server, i am adding that xml files to zip and then trying to download the zip but it is downloading .php file. here is my code
$xmlDoc = new DOMDocument("1.0", "UTF-8");
//create the root element
$root = $xmlDoc->appendChild(
$xmlDoc->createElement("resources"));
while($row=mysql_fetch_object($QUERY))
{
if($key_lang==9)
{
$xml_string = $xmlDoc->createElement( "string",trim($row->translate," "));
$xml_string->setAttribute( "name",$row->field_name);
$root->appendChild($xml_string);
}
else
{
$xml_string = $xmlDoc->createElement( "string",trim(base64_decode($row->translate)," "));
$xml_string->setAttribute( "name",$row->field_name );
$root->appendChild($xml_string);
}
}
header("content-type: text/plain; charset=ISO-8859-15");
//make the output pretty
$xmlDoc->formatOutput = true;
$string = $xmlDoc->saveXML();
$handle = fopen($path.$name_lang.".xml","w");
fwrite($handle,$string);
fclose($handle);
// $string = $xmlDoc->save($path.$name_lang.".xml");
$fullpath[$key_lang] = $path.$name_lang.".xml";
}
ob_clean();
flush();
//zip file creation
$zip = new ZipArchive();
//zip file name
$FilePath = $app_id.".zip";
$full_path_zip = 'https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$FilePath;
//check if file exists if yes then delete
if(file_exists(dirname(__FILE__)."/uploaded_xml/".$FilePath))
{
unlink (dirname(__FILE__)."/uploaded_xml/".$FilePath);
}
//open zip file to add files to zip file
if ($zip->open(dirname(__FILE__)."/uploaded_xml/".$FilePath, ZIPARCHIVE::CREATE) != TRUE)
{
die ("Could not open archive");
}
//$zip->addFile("file_path","file_name");
// loop through each file
foreach($language_array as $key=>$name)
{
//add files to zip
$zip->addFile($fullpath[$key],$name.".xml");
}
// close and save archive
$zip->close();`
here is my download zip file
$file_content = file_get_contents(dirname(__FILE__)."/uploaded_xml/".$FilePath); // To download the ZIP file
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.dirname(__FILE__)."/uploaded_xml/".$FilePath.'"');
echo $file_content;
it is downloading .php file with following content
PK ”R—I+ Qý
Bulgarian.xml”ÁnÓ#†ï}Š•ïP¸õ¤B J•Z‰pµ{’X²×ÑzàR ¢¤ŠBHo`ª˜†¤q_aöø×NÔÕ*nkÏÎ73ÿÌlk÷U‰—¤Ò0‘mçáýŽ é'A(ûmçù³½{;Îng«¥(M2åSÚÙ¢•j»^Lm§§B’AêFÝÈ]žå’§fÌ…à+3Âñ£ýà9O[Ûµ{3i˜E‘«WQq–â'32'|Å.jî‚sž ÌÜ raÞØß%‡©äóM¡ü§«Œ»*ñßK5"|æÀNÌ1|s§Ù¨(³Ø푧3EnªÉ‹ôà0 ouf,PzÁ?xʗͬHö‡iêÊDº²ïõÉ•®ï©JÅ3ÔqÁPr[ÏRÂOÏ8‡ cü<ÆyC©ûÒû/€’ÇÑA¥ä©yî-ù°êà°àíªµô*TèGYp¸¸ËŒó†…íË?H2ýt iÅGƒÖ#üú]~ÇßQ•Ã4XOúÝ+±GOŒl£,vnsÌÊä/øHû6<f‚/ïš6°÷šâÜsä8Z-¦ÔŸ<ß°WX€Úÿ‹²ù"IMêúö)V±lÚu¬Ùf÷=ϧ'¤É׉:ðºT=µ/ϬÄf$°9¹°/Žy_YÊk\k{íAûPK ”R—I„üa[€ Î Catalan.xml“ËN+1†÷<E”=—³c1„¸HH ±èa¹‰gj)—ÊI*x(6‡Gè‹áiT!¦=›(·ï÷Ûi®^ƒWkäL)ÎôŸ³0Úä(ö3ýw~z©¯Ú“†1§Ês{¢T“˹Šp¦;&Œ.¿ðfœëöÎg°flnÎwÄ4¼ªÞ›’c'¡–ƒ˜nçÄÀ
Öà½Z!«Ý¡žÖ³K(['Nà,ä¢Û[êj¦ÍÇ4µbTƒéJe4¹ ...
If i change the extension of downloaded file from .php to .zip it is working fine.
Kindly help thanks in advance...
Remove this line:
echo $file_content;
// To download the ZIP file
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-type: application/force-download');
header('Content-Disposition: attachment;
filename="'.dirname(__FILE__)."/uploaded_xml/".$FilePath.'"');
Try this
$file_content = file_get_contents(dirname(__FILE__)."/uploaded_xml/".$FilePath); // To download the ZIP file
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.dirname(__FILE__)."/uploaded_xml/".$FilePath.'"');
Related
How do I add a generated excel file to a password protected zip and download it?
I am using ZipArchive library. I am trying to add the excel file to zip but unfortunately zip is not getting generated.
if(isset($_POST["export_excel"]))
{
$sql = "SELECT * FROM Datas ORDER BY ID DESC";
$result = mysqli_query($connect, $sql);
....
....
....
$output .= '</table>';
$fileName = "DB".date('Y_m_d').".xls";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$fileName");
echo $output;
$zip = new ZipArchive;
$tmp_file = 'myzip.zip';
if ($zip->open($tmp_file, ZipArchive::CREATE)) {
$zip->setPassword>addFile('PASSWORD', $fileName);
$zip->setEncryptionName($fileName, ZipArchive: header('Content-disposition:EM_AES_256 attachment; filename=files.zip');
header('Content-type: application/zip');
$zip->close();
readfile($tmp_file);
}
}
I got it. If anyone needs it, the logic was to add contents of the database in excel and then output it.
$output .= '</table>';
$fileName = "DB".date('Y_m_d').".xls";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$fileName");
//echo $output;
file_put_contents($fileName, $output);
}
}
$zip = new ZipArchive;
$tmp_file = 'myzip.zip';
if ($zip->open($tmp_file, ZipArchive::OVERWRITE|ZipArchive::CREATE)) {
$zip->setPassword('PASSWORD');
$zip->addFile($fileName);
$zip->setEncryptionName($fileName, ZipArchive::EM_AES_256);
header('Content-disposition: attachment; filename=files.zip');
header('Content-type: application/zip');
readfile($tmp_file);
}
I am trying to zip a series of pdf files automatically when a page loads. The files are based on a query. I can't seem to figure out the error. All of the pdfs are kept in the agreements folder and I want the zip file to just download on the viewer's computer. The error code that I get is:
agreements/Acadience_Cambridge_Post_1.pdfagreements/DoTheMath_Cambridge.pdfagreements/Edulog_Cambridge.pdfagreements/DESSA_Cambridge.pdfagreements/FuelEducation_Cambridge_signed.pdfagreements/LegendsofLearning_Dedham.pdfagreements/workforce19-22.pdfagreements/Ellevation_Dedham_Posting.pdfagreements/Yabla_Cambridge.pdfagreements/Breakthrough-2020.pdfagreements/Cedar-Labs-DPA.pdfagreements/Tutoring Plus.pdfagreements/Elefante Letrado_Brockton - post.pdfagreements/CollegeBoard_Cambridge_post_1.pdfagreements/LanguageConnections_post.pdfagreements/Flat_Westford - post.pdfagreements/Albert.io_Cambridge_post.pdfagreements/Starfall_Walpole.pdfagreements/Tynker_Milton - post_1.pdfagreements/WeVideo_CambridgeTEC_1.pdfagreements/Checkology_Dedham.pdfagreements/BabylonHouse _Cambridge_signed_4.pdfagreements/FreeMath_Westwood_Post.pdf
Warning: ZipArchive::close(): Failure to create temporary file: Permission denied in /var/www/html/extract_dpas2.php on line 36
Could not find Zip file to download
Here is the code I have:
<?php require_once('Connections/sdpc_i.php'); ?>
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
$sql = "SELECT * FROM data WHERE districtID = 457 and statusID=1 and signed_agreement_file != 'NULL'";
if ($result=mysqli_query($sdpc_i,$sql))
{
// $rowcount=mysqli_num_rows($result);
// printf("Result set has %d rows.\n",$rowcount);
//define array for storing files
$file = array();
while ($row = mysqli_fetch_assoc($result)) {
//give file name with extension
$name ="agreements/".$row['signed_agreement_file'];
//store file name in array
$file[] = $name;
// store file in one folder named 'files'
file_put_contents($name,$row["signed_agreement_file"]);
}
$zipname = "file.zip";
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
foreach ($file as $f) {
echo $path = "".$f;
if(file_exists($path)){
$zip->addFromString(basename($path), file_get_contents($path));
}
else{
echo"file does not exist";
}
}
$zip->close();
//check zip file create or not and download it
if (file_exists($zipname)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($zipname).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($zipname));
ob_clean();
flush();
readfile($zipname);
exit;
} else {
exit("Could not find Zip file to download");
}
mysqli_free_result($result);
mysqli_close($conn);
}
?>
Thank you in advance for you help.
I want download multiple zip for multiple image at a time.But my code crate only one zip file for all image.
foreach ($data as $key => $files) {
/*$fileName="file.zip";*/
$fileName = $key.'.zip';
$tmpFile = tempnam('/tmp', '');
$zip = new ZipArchive;
$zip->open($tmpFile, ZipArchive::CREATE);
foreach ($files as $file) {
// download file
$fileContent = file_get_contents($file);
$zip->addFromString(basename($file), $fileContent);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$fileName);
header('Content-Length: ' . filesize($tmpFile));
readfile($tmpFile);
echo $fileName;
unlink($tmpFile);
}
I am using a wordpress template page download.php and the code is :
$ck=$_REQUEST['select'];
$num=count($ck);
$zip_file_name='demodown.zip';
$zip = new ZipArchive();
if ($zip->open($zip_file_name, ZIPARCHIVE::CREATE )!==TRUE)
{
exit("cannot open <$zip_file_name>\n");
}
$file_path = $_SERVER['DOCUMENT_ROOT']."/lab4/brazil_resource/wp-content/pdf_upload/";
for($i=0;$i<$num;$i++)
{
$sql=mysql_query("select * from wp_pagecontent where id='$ck[$i]'");
$f=mysql_fetch_array($sql);
$files=$f['pdf_file'];
$zip->addFile($file_path.$files,$files);
}
$zip->close();
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_file_name.'"');
exit;
Using the above code I cannot zip the files that are selected. The download files in showing 0 bytes size.
Please help
I had solved it now finally
$zip_file_name='demo.zip';
$zip = new ZipArchive();
$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);
$file_path = content_url()."/pdf_upload/";
foreach($_REQUEST['select'] as $file)
{
$download_file = $file_path.$file;
$download_file2 = file_get_contents($download_file);
$zip->addFromString('files/'.$file,$download_file2);
}
$zip->close();
if(file_exists($tmp_file))
{
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_file_name.'"');
readfile($tmp_file);
// remove zip file is exists in temp path
}
I have solved the other issue with the following code:
$zip_file_name='demo.zip';
$zip = new ZipArchive();
$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);
for($i=0;$i<$num;$i++)
{
$sql=mysql_query("select * from wp_pagecontent where id='$ck[$i]'");
$f=mysql_fetch_array($sql);
$files=$f['pdf_file'];
$download_file = file_get_contents($files);
//$fe=$file_path.$files;
//$zip->addFromString(basename($fe),file_get_contents($fe));
$zip->addFromString(basename($files),$download_file);
}
$zip->close();
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_file_name.'"');
header("Content-length: ".filesize($zip_file_name));
readfile($tmp_file);
exit;
<?php
$direc = base64_decode($_GET['path']);
$zip = new ZipArchive();
if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE) !== TRUE) {
exit("cannot open <$archive_file_name>\n");
}
//add each files of $file_name array to archive
foreach ($file_names as $files) {
$zip->addFile($file_path . $files, $files);
}
$zip->close();
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=" . $archive_file_name);
header('Cache-control: private, must-revalidate');
header('Content-Transfer-Encoding: binary');
readfile("$archive_file_name");
exit;
}
if (isset($_POST['file'])) {
$file_names = $_POST['file'];
$archive_file_name = 'zipped.zip';
$file_path = $direc;
echo $file_path;
//Run Function above
zipFilesAndDownload($file_names, $archive_file_name, $file_path);
if (file_exists($archive_file_name)) {
unlink($archive_file_name);
}
?>
I find code above and try it, The zip file created but statement unlink($zipname); doesn't work
I don't have any problem about permission
Is that file strill write-protected?
How to solve that problem?
Thanks Friends
Your function above should call return, not exit. Exit terminates execution of the script, so nothing after that will be called. It's probably not even getting to the file_exists part.