Foros del Web » Programando para Internet » PHP »

Recuperar archivo .doc con php de una bbdd Mysql

Estas en el tema de Recuperar archivo .doc con php de una bbdd Mysql en el foro de PHP en Foros del Web. Buenos días a tod@s. Estoy creando una web con Php y bbdd mysql. Tengo una página en la cual se quiere visualizar contenido de texto ...
  #1 (permalink)  
Antiguo 07/12/2011, 04:26
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Recuperar archivo .doc con php de una bbdd Mysql

Buenos días a tod@s.

Estoy creando una web con Php y bbdd mysql. Tengo una página en la cual se quiere visualizar contenido de texto a través de paginación. La paginación funciona correctamente, el problema viene cuando quiero recuperar los datos de texto de los .doc que he subido al servidor. Tengo una tabla en mysql que tiene dos campos uno es una clave primaria y otro es un blob (he probado con text y varchar) con direcciones http://www.miweb./..../texto1.doc:

idhus hustexto
1 http://www.miweb./..../texto1.doc
2 http://www.miweb./..../texto2.doc
3 http://www.miweb./..../texto3.doc

Este el parte del código para llamar a la base de datos y coger la dirección que llama los .doc guardados en el servidor.

<?php
.........

while($MostrarFila=mysql_fetch_array($Resultado)){
echo "<div>";
$result = $MostrarFila['hustexto'];
echo "</div>";
}
// echo "</table>";
?>

=======> muestra la dirección que pinchas en el número, es decir, si haces click en el 3 te sale esto : http://www.miweb./..../texto3.doc. Debería salir el texto del .doc




Si alguien pudiera darme alguna idea más ó ver que hago mal. Muchas gracias por todo.

Saludos!!!
  #2 (permalink)  
Antiguo 07/12/2011, 06:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

1 - si los archivos los almacenas en un directorio del server, no necesitas una URL hacia el dominio sino un path relativo interno

2 - no veo que en ninguna parte muestres $result a la salida

3 - no puedes embeber el binario de un documento de word en HTML, lo mejor es hacer un force download

4 - el tipo blob es para almacenar datos binarios, no necesariamente para cadenas
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/12/2011, 08:56
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

Hola Mayco,

Antes de nada gracias por responder.

Te comento un poco sobre los puntos que has puesto.

1.-he usado un path relativo interno como me comentaste y me muestra el path relativo pero no el archivo, es decir :

por ejemplo
el path es ../doc1.doc y eso es lo que meto como varchar ó text dentro de la bbdd en un campo y al llamarlo en la página web me muestra ../doc1.doc, en vez de ponerme el texto que está escrito en el doc1.doc.

Esto lo he probado a pasarlo con comillas "", como varchar, como text, path interno ahora.

2.- Se me olvidó poner aquí el final del código pero si que tenía puesto la salida del result en mi código.

<?php
...
while($MostrarFila=mysql_fetch_array($Resultado)){
echo "<div>";
$result = $MostrarFila['husostexto'];
echo "</div>";
}
?>
<? echo $result; ?> (Aquí también probé con un print por si acaso.)

3 y 4.- He utilizado tipo text y originariamente usé Varchar.


Muchas gracias por todo.

Saludos!!!
  #4 (permalink)  
Antiguo 07/12/2011, 10:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

no te entiendo. ¿que es lo que tienes en el campo, el path del archivo o el binario del archivo?

si tienes el path, para Mostrar el contenido del archivo debes de abrirlo y leerlo, además no puedes mesclar el binario de un archivo de word, tendrías que conseguir una clase que lea su estructura para obtener el texto
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 07/12/2011, 11:01
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

Tengo el path del archivo:

idhus hustexto
1 ../texto1.doc
2 ../texto2.doc
3 ../texto3.doc

texto1.doc
texto2.doc
texto3.doc

están en mi servidor dentro de una carpeta como archivos de texto.
  #6 (permalink)  
Antiguo 07/12/2011, 11:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

Hola de nuevo mayco,

acabo de leer en la web sobre el tema.

Esto es la respuesta de una persona a otra acerca de un tema similar:

"Es que estas abriendo un Word "a saco" es decir que te limitas a abrirlo, leerlo y enviarlo al navegador... Y eso solo funciona con documentos de texto plano...Un documento Word es un fichero binario que solo puede leerse con Word o con programas compatibles, no con explorer

Si quieres que tus visitas vean o se descarguen un documento word tienes que ponerlo como un enlace
"
  #7 (permalink)  
Antiguo 07/12/2011, 12:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

en efecto, word es un formato propietario de Microsoft, además de que no almacena los datos en forma plana sino en una codificación que ellos crearon, por lo cual, o haces un force-download para que el usuario descargue el archivo y lo abra, o desde PHP lees e interpretas tal binario y dumpeas el texto a la salida.

el problema es conseguir una clase que pueda leer e interpretar archivos de Word, en el caso de Excel hay muchas, pero de word no he averiguado.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 07/12/2011, 13:58
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

He realizado este código con el que he sacado todo el contenido del .doc, pero no sé que sucede que me saca también unos caractéres muy raros antes y después del texto.

<?php
//Definimos el path y la cadena
$path=$result;
$texto = leer_fichero_completo ($path);

function leer_fichero_completo($path){
$fichero_texto = fopen ($path, "rtb");
$contenido_fichero = fread($fichero_texto, filesize($path));
return $contenido_fichero;
}
?>
<p><?php echo $texto; ?></p>


El resultado sería poniendo un ejemplo.- Si mi doc1.doc tuviera el sigte texto:

¿Hola que tal?


Me muestra esto:

JÆÆƲ²²²²²ÿÿÿÿ 

¿Hola que tal?

' ( õêhÒo©h$*mH sH hÒo©



Saludos!!! y gracias por todas las ideas que me estás aportando mayco.
  #9 (permalink)  
Antiguo 07/12/2011, 14:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

¿leíste lo que te indique en el post anterior?: el formato de WORD está codificado en un formato de Microsoft, necesitas una clase o librería que lo decodifique

intenta abrir un documento de word en el block de notas, para que veas lo que te aparece
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #10 (permalink)  
Antiguo 07/12/2011, 16:28
 
Fecha de Ingreso: diciembre-2011
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Recuperar archivo .doc con php de una bbdd Mysql

Muchas gracias Mayco,

ya está resuelto el problema. Simplemente he utilizado formato .txt para poder decodificar y parece que funciona correctamente.

Un saludo y gracias.

Etiquetas: bbdd, doc, mysql, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:52.