Ouvrir n'importe quel fichier via php

Eléphanteau du PHP | 30 Messages

31 mai 2007, 09:55

Bonjour à tous,
Je voudrais savoir s'il est possible d'ouvrir un fichier (par ex .doc, .ppt, .xls ) via une interface php. J'ai trouvé la fonction fopen qui permet seulement de modifier les .txt mais je na'rrive pas à ouvrir un fichier quelconque.

Merci de votre aide.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

31 mai 2007, 10:11

Ouvrir un fichier pour le lire en PHP ou ouvrir un fichier pour l'envoyer à l'utilisateur ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 30 Messages

31 mai 2007, 10:13

Désolé de m'etre mal exprimé.

En faite, j'affiche une arborescence des fichiers contenus dans un repertoire et je voudrais pouvoir modifier ces fichiers (j'ai des cases à cocher modif, sup, deplacer, modif )

J'aimerais donc pouvoir ouvrir un fichier, par exemple un fichier powerpoint et pouvoir ainsi le modifier.

J'espère avoir été plus clair.
Merci

ViPHP
ViPHP | 1996 Messages

31 mai 2007, 23:15

Je crois qu'il existe une fonction com();

lien : http://fr.php.net/manual/fr/ref.com.php
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 5924 Messages

01 juin 2007, 03:33

C'est coton quand même à utiliser les composants COM...
Et faut pas espérer que l'extension soit activée sur un serveur de production non dédié, à fortiori si c'est un serveur sous système linux, comme le sont la plupart actuellement...

Eléphanteau du PHP | 30 Messages

01 juin 2007, 09:58

Merci bien.
Ca n'a pas l'air facile en effet pour un débutant comme moi ;)
Mias je vais essayer.
Encore merci.

Eléphant du PHP | 451 Messages

01 juin 2007, 11:54

Bonjour,

Je ne sais pas si ça pourra t'aider mais par curiosité, j'avais fait des tests et répondu ça (ça concerne excel) :
http://www.phpfrance.com/forums/viewtop ... ht=#192746
l'auteur de la question n'est pas revenu dire ou il en était...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphanteau du PHP | 30 Messages

01 juin 2007, 14:12

Bonjour.
En effet, cela ne peux guère m'aider parce que les fichiers excel que je crées sont à contenu variable. Etant en stage, je ne peux demander aux utilisateurs du site de creer leur document xls via du code php.

Merci quand même de ce post. Je pense que cela peut m'aider à utiliser les composants COM.
Si j'arrive à mes fins (espérons ;) ) , je posterai mon script.

Merci à tous. :D

Eléphant du PHP | 451 Messages

01 juin 2007, 16:02

J'avais compris que tu voulais ouvrir et modifier le fichier avec PHP mais si tu veux simplement ouvrir un fichier avec la bonne application, tu n'as pas besoin des composants COM.
J'ai déjà fait ça avec un fichier xls, ça doit être possible avec les autres.

Je vais rechercher...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 451 Messages

01 juin 2007, 17:27

Donc voici un exemple qui t'affiche la liste des fichiers du répertoire courant dans un select.
Si tu mets dans le même répertoire des fichiers '.xls', '.pps', ou '.doc', tu peux les choisir et le programme envoie l'header correspondant et le fichier ce qui a pour effet de l'ouvrir dans la bonne application sur la station.
<?php

function send_header () {
print "<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">";
print "<html>";
print "<head>";
print "   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";
print "<META HTTP-EQU=\"pragma\" CONTENT=\"no-cache\"> ";
print "<META HTTP-EQU=\"Cache-Control\" CONTENT=\"no-cache\"> ";
print "<META HTTP-EQUIV=\"Expires\" CONTENT=\"Tue, 20 Aug 1996 14:25:27 GMT\"> ";
print "   <meta name=\"Generator\" content=\"Microsoft Word 97\">";
print "   <meta name=\"Template\" content=\"C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot\">";
print "   <meta name=\"GENERATOR\" content=\"Mozilla/4.7 [en] (Win98; I) [Netscape]\">";
print "   <title>test</title>";
print "</head>";
print "<body link=\"#0000FF\" vlink=\"#800080\">";
}

function send_footder () {
print "</body>";
print "</html>";
}

if (!$_POST["FILE"]) {

send_header();
?>
<form action="<?php $_SERVER["PHP_SELF"]?>"  method="post" name="formulaire">
<?php
    if ($dh = opendir(".")) {
	echo "<SELECT NAME=FILE>";
        while (($file = readdir($dh)) !== false) {
            //echo "fichier : $file : type : " . filetype($dir . $file) . "\n";
			echo "<OPTION>$file</OPTION>";
        }
        closedir($dh);
	echo "</SELECT>";
	echo "<BR>";
	echo "<INPUT TYPE=SUBMIT>";
    }

?>
</form>
<?php

send_footder();
}
else {
$FILE=$_POST["FILE"];
$extension=strrchr($FILE,'.');
//send_header();
//echo "<BR> Il faut afficher ".$FILE."<BR>";
switch ($extension) {
	case ".xls" :
	$app="vnd.ms-excel";
	//echo "fichier excel";
	break;
	case ".pps" :
	$app="vnd.ms-powerpoint";
	//echo "fichier powerpoint";
	break;
	case ".doc" :
	$app="msword";
	//echo "fichier word";
	break;
	default :
	//echo "fichier de type inconnu";
	break;
}
if ($app != "") {
	header ("Content-type: application/".$app);
	readfile($FILE);
	}
	else {
		send_header();
			echo "Le document : ".$FILE." est de type inconnu...";
		send_footder();
	}

//send_footder();
}

?>
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphanteau du PHP | 30 Messages

04 juin 2007, 09:12

Merci beaucoup jpaul, ça marche à merveille, je vais maintenant chercher à etendre les applications afin d'ouvrir d'autres types de fichiers.

Merci à tous, plus particulièrement à jpaul :wink:

ps : j'ai donc abandonné les composants COM
et je posterai des headers pour d'autres applications (si je trouve ;) )

Eléphanteau du PHP | 30 Messages

04 juin 2007, 09:32

Voici donc le code nécessaire pour ouvrir une archive ZIP et un document pdf.

   header("content-type: application/zip");
   //header("Content-Disposition: inline; filename=selection.zip"); //force le téléchargement
   header("Content-Disposition: attachment; filename=selection.zip"); //laisse le choix à l'utilisateur
   header("Content-Transfer-Encoding: binary");
   header('Cache-Control: no-store, no-cache, must-revalidate');
   header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   header('Pragma: public');
   header("Expires: 0");


header('Content-type: application/pdf');
header('Content-Disposition: inline; filename=doc.pdf');
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('Pragma: anytextexeptno-cache', true);
header('Cache-control: private');
header('Expires: 0');

ViPHP
ViPHP | 5924 Messages

04 juin 2007, 09:40

ps : j'ai donc abandonné les composants COM
De toute facon, les composants COM te permettent d'utiliser les logiciels sur le serveur, pas sur le client...

Eléphanteau du PHP | 30 Messages

04 juin 2007, 10:40

autant pour moi :? :roll:

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

04 juin 2007, 11:26

Un peu hors-sujet mais quand même : au temps pour moi