Insertar un fichero vía ODBC en access 97

Buenas a todos, estoy intentando guardar en una tabla de access con php vía odbc el contenido de un fichero. El problema surge a la hora de que access acepte cualquier tipo de datos. La verdad es que no se en que tipo de campo guardarlo ya que el único que se adapta a mis necesidades es el Objeto/OLE pero no se como pasarle los datos en el insert. Otro tipo de campo que podría ser útil es el memo pero al admitir solo texto me da problemas en el insert con algunos caracteres. Si alguien ha conseguido programando en php guardar el contenido de un fichero conseguido en un formulario en un campo de una tabla de access vía ODBC por favor que me diga como es posible porque mis conocimientos ya no dan más de si. Me puede valer alguna función que convierta el contenido del fichero a modo texto. Estoy desesperado así que cualquier cosilla que se os ocurra la recibiré gustoso.
Gracias de antemano.
Pablo.
1

1 Respuesta

13.725 pts.
Lo habitual en estos casos no es incrustar el archivo en la Base de Datos, sino guardar en el campo la dirección URL en tu servidor y paralelamente subir ese archivo al directorio indicado.
En el campo guardariamos "http://www.miservidor.com/uploads/eldocumento.doc"
Y al enviar el formulario recibiríamos el archivo y lo guardaríamos en la carpeta "uploads" con el nombre "eldocumento.doc".
Para hacer todo esto, en el formulario has de incluir esta porción de código:
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000">
<INPUT NAME="userfile" TYPE="file">
cambia a tu anotojo el tamaño máximo de los archivos en el campo MAX_FILE_SIZE
Y ahora en el PHP has de incluir esta porción de código con el que gestionarás la carga de archivos en tu servidor (extraído de www.php.net):
function is_uploaded_file($filename) {
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
/* User might have trailing slash in php.ini... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
y llamarla así:
if (is_uploaded_file($userfile)) {
copy($userfile, "/directorio/local/del/servidor/web/uploads/" . $nombre_remoto);
} else {
echo "Possible file upload attack: filename '$userfile'.";
}
También lo he extraído de www.php.net.
Ahora ya solo tendrías que atacar a la base de datos y guardar en un campo el lugar donde se guardó satisfactoriamente el archivo.
Espero que esto te convenga como solución. Sino, seguimos dándole vueltas, ¿ok?
Ah! Y puntuame! X)) Graciassss
Tío, me has salvado la vida o por lo menos la cabeza porque ya no sabia que hacer. Es la mejor solución que me podían haber dado, funciona de lujo. Muchas gracias de verdad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas