Page 1 sur 2
Ouvrir n'importe quel fichier via php
Posté : 31 mai 2007, 09:55
par kpn59
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.
Posté : 31 mai 2007, 10:11
par mere-teresa
Ouvrir un fichier pour le lire en PHP ou ouvrir un fichier pour l'envoyer à l'utilisateur ?
Posté : 31 mai 2007, 10:13
par kpn59
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
Posté : 31 mai 2007, 23:15
par Aureusms
Je crois qu'il existe une fonction com();
lien :
http://fr.php.net/manual/fr/ref.com.php
Posté : 01 juin 2007, 03:33
par Sékiltoyai
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...
Posté : 01 juin 2007, 09:58
par kpn59
Merci bien.
Ca n'a pas l'air facile en effet pour un débutant comme moi

Mias je vais essayer.
Encore merci.
Posté : 01 juin 2007, 11:54
par jpaul
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...
Posté : 01 juin 2007, 14:12
par kpn59
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.

Posté : 01 juin 2007, 16:02
par jpaul
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...
Posté : 01 juin 2007, 17:27
par jpaul
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();
}
?>
Posté : 04 juin 2007, 09:12
par kpn59
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
ps : j'ai donc abandonné les composants COM
et je posterai des headers pour d'autres applications (si je trouve

)
Posté : 04 juin 2007, 09:32
par kpn59
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');
Posté : 04 juin 2007, 09:40
par Sékiltoyai
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...
Posté : 04 juin 2007, 10:40
par kpn59
autant pour moi

Posté : 04 juin 2007, 11:26
par Hubert Roksor
Un peu hors-sujet mais quand même :
au temps pour moi