Ruta de una carpeta mediante una variable
Publicado por Adriana Bello (3 intervenciones) el 22/03/2017 22:32:00
Antes que todo muy buen día, tarde, o noche según lean este Post.
Me dirijo ante esta comunidad para solicitar una ayuda que aunque sea quizás un poco tonta la consulta, a mi en lo particular me atormenta.
Me encuentro en un proyecto, donde cargo unos archivos PDF, después esos archivos son reasignados a "x" cantidad de usuario, al momento en que el usuario solicita esos archivos, ellos son modificados, se insertan los datos del usuario, y se forza una descarga mediante el navegador de todos los archivos solicitados en un Zip.
Codigo Completo:
Todo bien, excepto que cuando intento generar el Zip, me trae la ruta completa. El directorio Principal, y cada Subdirectorio que en el se encuentra, mas necesito que traiga solamente el directorio de la persona que lo solicita.
// Fuente es el nombre de la Carpeta Principal y Ruta Dinámica es los subdirectorios que pertenecen a cada persona:
//CarpetaRaiz/CodigoPersona.
$dir = "Fuente"; /*Ruta Dinamica*/
//$cedula= es el código que identifica a cada persona y por la cual creo los subdirectorios con os archivos de cada 1
Probe con: $dir= "Fuente/" . $cedula;
es decir concatenar ruta con la variable que identifica a cada usuario y me genera error.
Espero encontrar ayuda de vuestra parte. Agradecida por todo de antemano.
Me dirijo ante esta comunidad para solicitar una ayuda que aunque sea quizás un poco tonta la consulta, a mi en lo particular me atormenta.
Me encuentro en un proyecto, donde cargo unos archivos PDF, después esos archivos son reasignados a "x" cantidad de usuario, al momento en que el usuario solicita esos archivos, ellos son modificados, se insertan los datos del usuario, y se forza una descarga mediante el navegador de todos los archivos solicitados en un Zip.
Codigo Completo:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
-<?php
include('../Usuario/config.php');
require_once('FPDI/fpdf.php');
require_once('FPDI/fpdi.php');
define('FPDF_FONTPATH','../FPDI/font/');
session_start();
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
// Crear la imagen (imagecreatetruecolor ( width, height ))
$im = imagecreatetruecolor(1200, 50);
// Crear algunos colores imagecolorallocate ( resource $image, r, g, b)
$blanco = imagecolorallocate($im, 255, 255, 255);
$gris = imagecolorallocate($im, 128, 128, 128);
$gris2 = imagecolorallocate($im, 17, 17, 17);
$negro = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 1200, 50, $blanco);
// El texto a pintar
$texto = 'Nombre y Apellido:'.$_SESSION["s_username"].' - Cedula:'.$_SESSION["s_cedula"].' - Escuela:'.$_SESSION["s_escuela"];
// Reemplaze la ruta con su propio ruta a la fuente
$fuente = 'times.ttf';
// Agregar el texto imagettftext ( resource $image, size, angle, x, y, color, fontfile, text )
imagettftext($im, 20, 0, 20, 20, $gris2, $fuente, $texto);
// Usar imagepng() resulta en texto más claro, en comparación con imagejpeg()
imagepng($im,"yo.png");
imagedestroy($im);
class PDF extends FPDI
{
function Footer()
{
// Positionnement à 1,5 cm du bas
$this->SetY(-15);
// Police Arial italique 8
// $this->SetFont('Arial','I',8);
// Numéro de page
//$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
$this->Image('yo.png',40,10,140);
}
}
/*Inicio Del Codigo Guardar PDF en 1 Carpeta por Numero de Cedula*/
$ruta = './MateriaPDF/';
$destino = './fuente/';
$query = mysql_query("SELECT Materia FROM expediente
WHERE cedula = '".$_SESSION["s_cedula"]."'") or die(mysql_error());
while ($res = mysql_fetch_array($query))
{
$fuentex = $ruta.$res['Materia'];
//echo $fuentex.'<br>';
//echo $res['Materia'].'<br>';
$pdf = new PDF();
$pagecount = $pdf->setSourceFile($fuentex);
//$pdf->SetFont('../FPDI/font/calligra.ttf','',12);
$pdf->addPage();
for ($n = 1; $n <= $pagecount; $n++)
{
$tplIdx = $pdf->importPage($n, '/MediaBox');
//$tplIdx = $pdf->importPage($n);
$pdf->useTemplate($tplIdx, 10, 10, 180);
if ($n != $pagecount) {
$pdf->AddPage();
}
}
$cedula = $_SESSION["s_cedula"];
//Creo la Carpeta
$carpeta = $destino.$cedula;
if (!file_exists($carpeta)) {
mkdir($carpeta, 0777, true);}
//Asigno contenido a la carpeta
$archivopdf = $carpeta."/".$cedula.'_'.$res['Materia'].'.pdf';
$pdf->Output($archivopdf);
/*Fin Del Codigo Guardar PDF en 1 Carpeta por Numero de Cedula*/
}
/* primero creamos la función que hace la magia
* esta funcion recorre carpetas y subcarpetas
* añadiendo todo archivo que encuentre a su paso
* recibe el directorio y el zip a utilizar
*/
function agregar_zip($dir, $zip) {
//verificamos si $dir es un directorio
if (is_dir($dir)) {
//abrimos el directorio y lo asignamos a $da
if ($da = opendir($dir)) {
//leemos del directorio hasta que termine
while (($archivo = readdir($da)) !== false) {
/*Si es un directorio imprimimos la ruta
* y llamamos recursivamente esta función
* para que verifique dentro del nuevo directorio
* por mas directorios o archivos
*/
if (is_dir($dir . $archivo) && $archivo != "." && $archivo != "..") {
echo "<strong>Creando directorio: $dir$archivo</strong><br/>";
agregar_zip($dir . $archivo . "/", $zip);
/*si encuentra un archivo imprimimos la ruta donde se encuentra
* y agregamos el archivo al zip junto con su ruta
*/
} elseif (is_file($dir . $archivo) && $archivo != "." && $archivo != "..") {
echo "Agregando archivo: $dir$archivo <br/>";
$zip->addFile($dir . $archivo, $dir . $archivo);
}
}
//cerramos el directorio abierto en el momento
closedir($da);
}
}
}
//fin de la función
//creamos una instancia de ZipArchive
$zip = new ZipArchive();
/*directorio a comprimir
* la barra inclinada al final es importante
* la ruta debe ser relativa no absoluta
*/
$dir = "Fuente"; /*Ruta Dinamica*/
//ruta donde guardar los archivos zip, ya debe existir
$rutaFinal = "archivos";
if(!file_exists($rutaFinal)){
mkdir($rutaFinal);
}
$archivoZip = $cedula;
if ($zip->open($archivoZip, ZIPARCHIVE::CREATE) === true) {
agregar_zip($dir, $zip);
$zip->close();
//Muevo el archivo a una ruta
//donde no se mezcle los zip con los demas archivos
rename($archivoZip, "$rutaFinal/$archivoZip");
//Hasta aqui el archivo zip ya esta creado
//Verifico si el archivo ha sido creado
if (file_exists($rutaFinal. "/" . $archivoZip)) {
echo "Proceso Finalizado!! <br/><br/>
Descargar: <a href='$rutaFinal/$archivoZip'>$archivoZip</a>";
} else {
echo "Error, archivo zip no ha sido creado!!";
}
}
?>
Todo bien, excepto que cuando intento generar el Zip, me trae la ruta completa. El directorio Principal, y cada Subdirectorio que en el se encuentra, mas necesito que traiga solamente el directorio de la persona que lo solicita.
// Fuente es el nombre de la Carpeta Principal y Ruta Dinámica es los subdirectorios que pertenecen a cada persona:
//CarpetaRaiz/CodigoPersona.
$dir = "Fuente"; /*Ruta Dinamica*/
//$cedula= es el código que identifica a cada persona y por la cual creo los subdirectorios con os archivos de cada 1
Probe con: $dir= "Fuente/" . $cedula;
es decir concatenar ruta con la variable que identifica a cada usuario y me genera error.
Espero encontrar ayuda de vuestra parte. Agradecida por todo de antemano.
Valora esta pregunta


0