Llamar a funcion php desde un botón de html
Publicado por jose (71 intervenciones) el 12/03/2021 09:40:11
Buenos días,
He creado una función para comprimir todos los archivos de una carpeta de fotos se descargue automáticamente.
Mediante el botón llame a la función.
He leído que no se puede llamar a la función directamente, sino a través de javascript o ajax, pero no encuentro la forma de hacerlo.
Alguien podría echarme una mano para hacerlo funcionar.
Muchas gracias.
He creado una función para comprimir todos los archivos de una carpeta de fotos se descargue automáticamente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//funcion para comprimir
function comprimir($dir) {
// Get real path for our folder
$rootPath = realpath($dir);
// Initialize archive object
$zip = new ZipArchive();
$filename = "../../fotos/zip/Fotos.zip";
$zip->open($filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
}
}
// Zip archive will be created only after closing object
$zip->close();
$fileName = basename($filename);
//$filePath = 'files/'.$fileName;
if(!empty($filename) && file_exists($filename)){
// Define headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
// Read the file
readfile($filename);
exit;
}else{
echo 'The file does not exist.';
}
}
Mediante el botón llame a la función.
1
<a class="button" href="#" onclick="comprimir($dir);">Descargar fotos</a>
He leído que no se puede llamar a la función directamente, sino a través de javascript o ajax, pero no encuentro la forma de hacerlo.
Alguien podría echarme una mano para hacerlo funcionar.
Muchas gracias.
Valora esta pregunta


0