Categories > [old] TbsOoo & TinyDoc >

Ouverture d'un document ouvert sur le réseau

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: bruno
Date: 2006-12-29
Time: 16:55

Ouverture d'un document ouvert sur le réseau

Bonjour,

Merci encore pour cet excellent travail et tous mes voeux pour 2007.

J'ai une dernière question je pense pour cette année qui vient de s'écouler.

J'utilise TBSOoo dans le cadre d'un Intranet et lorsque je je crée un document, je le copie sur le serveur dans le dossier correspondant au client concerné. Pour cela j'utilise :
// sauvegarde du document généré
$file=$OOo->GetPathnameDoc();
copy($file, $lancopy);

// display
header('Content-type: '.$OOo->GetMimetypeDoc());// Récupère le type de traitement à utiliser pour ouvrir un document de ce type.
header('Content-Length: '.filesize($lancopy));
$OOo->FlushDoc();
$OOo->RemoveDoc();

Ma question : est-il prévu de pouvoir ouvrir directement le document sur le réseau et non pas par copie dans "temp" ?

Merci d'avance
By: Olivier Loynet
Date: 2006-12-30
Time: 08:16

Re: Ouverture d'un document ouvert sur le réseau

Bonjour Bruno,

Si je comprends bien, tu fais une copie du document généré dans un repertoire sur ton réseau avant de l'afficher.
Ensuite tu ouvres le document vers le navigateur pour l'afficher.

Pour manipuler les documents OpenOffice, en particulier les opérations d'extraction, de fusion et de compression, tbsOOo a besoin d'un répertoire temporaire.

Ensuite tu peux, comme ton code, le sauvegarder ailleurs sur ton réseau pour en conserver une trace. Cela dépend de ton organisation et de ton application.

Tu peux aussi changer le répertoire temporaire par celui du réseau mais tu perdrais en performance.

La question est pourquoi le sauvegarder sur ton réseau ? Car ton application web fonctionne dans un navigateur, donc les gens peuvent y acceder par un navigateur sans avoir à le consulter dans le répertoire réseau. Cela peut dépendre si le document à une durée de vie "instantanée" ou doit être "conservé"

Olivier
By: Bruno
Date: 2006-12-30
Time: 14:48

Re: Ouverture d'un document ouvert sur le réseau

Bonjour Olivier,

Certains documents doivent effectivement être conservés.

Je pensais en fait le créer sur le serveur (je maîtrise ainsi l'emplacement et le nom) pour ensuite l'ouvrir comme si j'ouvrais un document normalement sur le réseau.

Donc avec ce que j'ai fait, c'est bien le document généré et déplacé qui est ouvert.

Mais, il est ouvert par download, donc placé dans "temp" et le nom est changé (ça je ne comprends pas pourquoi).

En fait, je ne veux pas de download puisque le document est sur le réseau, c'est comme si je voulais ouvrir un document en local.

Merci

Bruno
By: Olivier Loynet
Date: 2006-12-30
Time: 15:40

Re: Ouverture d'un document ouvert sur le réseau

Re...

Par défaut le document est créé dans le répertoire temporaire avec un nom unique (car cela permet à plusieurs utilisateurs de creer des documents à partir d'un même template sans conflit de nom).

Si tu dois le conserver, copie le et renomme le avec le nom original

Si tu dois l'afficher, renvoie le vers le navigateur avec le code ci-après.

Tu peux aussi attacher le document à un mail pour l'envoyer sans avoir besoin de l'afficher

Pour afficher vers le navigateur, voici un code PHP plus performant qui fonctionne sans probleme avec IE et Firefox

$file_source = $OOo->GetPathnameDoc();
$file_name = 'le nom du fichier à afficher lors du téléchargement';

if (file_exists($file_source) && filesize($file_source)) {

  // header du fichier en tant que piece jointe (voir content-disposition)
  header('Pragma: public');
  header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  header('Cache-Control: no-store, no-cache, must-revalidate');
  header('Cache-Control: pre-check=0, post-check=0, max-age=0');
  header('Content-Transfer-Encoding: none');
  header('Content-type: '.$OOo->GetMimetypeDoc());
  header('Content-Length: '.filesize($file_source));
  header('Content-Disposition: attachment; filename="'.$file_name.'"');

  // envoie du fichier temporaire vers le navigateur
  $OOo->FlushDoc();

  // suppression du fichier temporaire
  $OOo->RemoveDoc();
}


By: bruno
Date: 2006-12-30
Time: 16:48

Re: Ouverture d'un document ouvert sur le réseau

Merci,

Effectivement, le nom est celui choisi, mais le dossier est "TEMP" et nom le dossier dans lequel le document a été copié (donc sauvegardé).

Ce qui fait que si l'utilisateur fait enregistrer sous, il devra chercher le voisinage réseau, et descendre l'arborescence des dossiers.

Ensuite, il aura le message que le document existe déjà (sauf bien sûr à ne pas faire la sauvegarde, mais c'est dangereux car c'est le seul moyen d'avoir la trace que l'utilisateur a bien demandé ce document).

Peut-on forcer démarrer Ooo en lui donnant le lien du document, comme on le ferait à partir de l'explorateur windows ?

Merci d'avance

Bruno
By: Olivier Loynet
Date: 2006-12-31
Time: 16:35

Re: Ouverture d'un document ouvert sur le réseau

A mon avis, il faudrait que l'utilisateur voit un "environnement de fichiers virtuel" dans son navigateur qui soit visible à travers l'intranet, tout comme il pourrait y acceder par "voisinage réseau".

Il doit exister des developpements en PHP pour afficher les fichiers et répertoires, comme les gestionnaires de photos, et en plus avec une couche de Web2.0, l'utilisateur n'aura de difficulter pour s'y retrouver car cela se rapprochera de l'exploteteur de windows

Cela permet aussi à des utilisateurs nomades de voir ses fichiers dans un navigateur à l'exterieur. Attention à la sécurité !

Aussi, en rajoutant des fonctions spécifiques, cela permet de voir si l'utilisateur à ouvert un fichier, à quelle date...

Dans le code PHP précédent, il faut modifier le nom du fichier à télécharger par la variable du header défini après "filename".

header('Content-Disposition: attachment; filename="'.$file_name.'"');

il est possible d'ouvrir le document dans la page courante du navigateur par la commande

header('Content-Disposition: inline; filename="'.$file_name.'"');

voir les RFC
http://www.ietf.org/rfc/rfc2183.txt

Je pense que nous sortons un peu du sujet, et te souhaite une bonne année.

Olivier




By: Anonymous
Date: 2006-12-31
Time: 17:04

Re: Ouverture d'un document ouvert sur le réseau

Merci à toi,

Je vais continuer à creuser.

Je te souhaites un joyeux réveillons et une bonne année 2007 sur tous les plans.

Bruno
By: Kroiner
Date: 2007-01-11
Time: 11:51

Re: Ouverture d'un document ouvert sur le réseau

Hi!

I have the same problem and resolved using this:

header('Content-Type: '.$OOParser->GetMimetypeDoc().' name='.$filename);
header('Content-Length: '.filesize($OOParser->GetPathnameDoc()));
header('Content-Disposition: attachment; filename='.$filename);

Kroiner