Ayuda Archivos Base 64 SQL Server PHP

Iniciado por ElInquisidor, 27 Abril 2016, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

ElInquisidor

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

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ElInquisidor

#2
lel


Ya realice el codigo fuente es el siguiente



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:


<?



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

$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.