Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: ElInquisidor en 27 Abril 2016, 01:58 am



Título: Ayuda Archivos Base 64 SQL Server PHP
Publicado por: ElInquisidor en 27 Abril 2016, 01:58 am
Tengo guardados en base 64 archivos Office y PDF.


No se como convertirlos de nuevo a lo que eran y descargarlos.



Alguien sabe como puedo lograr esto.



Saludos


Título: Re: Ayuda Archivos Base 64 SQL Server PHP
Publicado por: engel lex en 27 Abril 2016, 04:55 am
http://php.net/manual/es/function.base64-decode.php (http://php.net/manual/es/function.base64-decode.php)
http://php.net/manual/es/function.base64-encode.php (http://php.net/manual/es/function.base64-encode.php)


Título: Re: Ayuda Archivos Base 64 SQL Server PHP
Publicado por: ElInquisidor en 27 Abril 2016, 18:20 pm
lel


Ya realice el codigo fuente es el siguiente

Código:

function Buscar_archivo_BD($fichero,$identificador,$nombre_archivo){

 $dbx = new db();

 $query = "SELECT archivo FROM doc_archivos WHERE nombre ='".$fichero."' ORDER BY id DESC  ";
 $dbx->Query($query);


 if($dbx->next_record()){
    $archivo_b64 = $dbx->Info("archivo");
 }


$archivo_final =  base64_decode($archivo_b64);



copy($archivo_final, $fichero);

return 1;

}



Creo que esto solo aplica  para strings... pues lo que tengo codificado en base 64 guardado en base de datos son archivos office y PDF.

Al parecer creo que el base64_decode si esta realizando su funcion ya que cuando lo imprimo si modifica y hace "entendible" el string....



:(


Alguien sabe como hago para volver a la normalidad este archivo que estaba en base 64....

Hola De nuevo hice la modificacion del codigo fuente agregando lo siguiente:


Código:
<?



function Buscar_archivo_BD($fichero,$identificador){


$cosito = explode("/", $fichero);

$ruta = $cosito[0]."/".$cosito[1]."/";

$nombre_archivo_final = $cosito[2];




 $dbx = new db();

 $query = "SELECT archivo FROM doc_archivos WHERE nombre ='".$fichero."' ORDER BY id DESC  ";
 $dbx->Query($query);
 if($dbx->next_record()){
    $archivo_b64 = $dbx->Info("archivo");
 }


$archivo_final =  base64_decode($archivo_b64);



file_put_contents($ruta."/".$nombre_archivo_final, $archivo_final);

return 1;

}
?>



Si lo guarda en el servidor en una carpeta especifica pero al abrirlo el archivo aparece dañado.


Tengo otro script que lo que hace es convertir eso en base 64 y descargarlo.

Este si funciona pero no se como hacer para que guarde en el servidor este archivo y que no lo descargue.


- Les comparto el código

Código:
$res = $db->dpsql_query($query);
if($arr = $db->dpsql_fetch_array($res)){
$pos = (strstr($archivo, "/"))?strrpos($archivo, "/")+1:0;
$nombre = substr($archivo, $pos);
$content = stripslashes($f->decode($arr['archivo']));
$informacion = pathinfo($archivo);
$extension = $informacion['extension'];

if($extension=="xls"){
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: inline; filename="documento.xls"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if($extension=="xlsx"){
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: inline; filename="documento.xlsx"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if ($extension=="doc"){
header('Content-Type: application/msword');
header('Content-Disposition: inline; filename="documento.doc"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if ($extension=="docx"){
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Disposition: inline; filename="documento.docx"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if ($extension=="ppt"){
header('Content-Type: application/vnd.ms-powerpoint');
header('Content-Disposition: inline; filename="documento.ppt"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if ($extension=="pptx"){
header('Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation');
header('Content-Disposition: inline; filename="documento.ppt"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}
else if ($extension=="pdf"){
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="documento.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($content));
header('Connection: Close');
set_time_limit(0);
echo $content;
}

}else{
echo "Archivo no encontrado";
}

Saludos,



Si alguien sabe como con el segundo script puedo capturar el archivo de alguna manera y guardarlo se los agradeceria.