Download fichier sur serveur

Résolu/Fermé
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
- 20 juin 2006 à 14:19
 jeffnjd - 11 sept. 2009 à 23:54
Bonjour à tous,

Pour mon 1er post je vais essayer d'être clair :

J'ai une appli en php avec des bases Mysql derrière, le tout fonctionnant sur un intranet.
en cliquant sur un lien dans une page ça doit télécharger un fichier (Word ou openoffice) (en fait ça ouvre la fenêtre avec les choix ouvrir ou enregistrer).

Ces fichiers à télécharger se trouvent sur un serveur samba et chacun peut y accéder de son poste (sous XP) via un lecteur réseau (ici P:\rep1\rep2\).

Pour vérifier qu'un fichier existe, j'utilise fopen("P:\rep1\rep2\fichier.doc")

Ca fonctionne très bien en local (via appli de test accessible par http://127.0.0.1/appli...) mais si j'accède à la "vraie" appli (via http://nomserveur/appli...) là le fopen me renvoie une erreur disant que le chemin n'existe pas.

Pourriez vous me dire à quoi doit ressembler le chemin pour accéder à ces fichiers via l'appli web svp

J'ai aussi essayé avec l'ip du serveur plutôt que la lettre du lecteur réseau et là encore même pb (marche en local mais pas en "web")

(Je précise que l'appli et les fichiers sont sur deux serveurs différents)

Si vou avez une idée elle est la bienvenue
merci

15 réponses

crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
20 juin 2006 à 18:26
Salut,
Ton serveur WEB il voit les ressources du serveur SAMBA ?
Si tu fais un INTRANET et que tous tes clients voient les ressouces SAMBA,
utilises plutôt un lien de type file://...
A+, crabs
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
21 juin 2006 à 09:28
il me semble que j'ai déjà essayé et que les liens de type file:// ne passe plus avec les navigateurs aujourd'hui
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
21 juin 2006 à 10:30
scuse en fait ça passe bien mais par contre j'aimerai tester si un fichier n'existe pas déjà sur le serveur de fichiers et pour ça j'utilisais le fopen php avec \\ipserveurfichiers\rep\fichier et là pb

merci en tout cas c'est déjà ça
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
21 juin 2006 à 11:00
Voilà où j'en suis et ce qui ne va pas :

file_exists("\\\\172.28.45.43\dossiers\appli\boo.sxw")
renvoi false

fopen("\\\\172.28.45.43\dossiers\appli\boo.sxw", "r")
indique qu'il le chemin est invalide (fichier ou dossier inexistant)

et pourtant
echo("<a href=file://///172.28.45.43/dossiers/appli/boo.sxw>Accès au fichier</a>");
Le lien fonctionne et j'accède sans problème au fichier

(ça commence légèrement à me gonfler pour rester poli)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
21 juin 2006 à 17:04
Salut,
N'oublies pas que ton script s'exécute sur le serveur WEB. Donc dans ton
script, il faut que tu précises le chemin d'accès au fichier sur le serveur de
fichier.
Ton file_exists() repose sur un chemin UNC, ton serveur WEB est-il capable
de comprendre ce chemin et est-ce chemin est effectivement accessible par le
service WEB ?

Lorsque tu utilises le lien file:// c'est le client qui doit avoir l'accès au fichier,
soit le PC sur lequel tu utilises un navigateur.

A+, crabs
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
21 juin 2006 à 17:52
pour le file_exists j'ai compris mais mon problème est que je peus "télécharger" (en tout cas avoir accès) le fichier sur le serveur de fichiers (via html avec href=file://... comme dit plus haut) mais il faut que je teste s'il existe avant.

Or pour ça à part les fopen, fread et autres je ne vois pas.

C'est justement ce "chemin d'accès au fichier" comme tu dis qui me pose pb car le souci c'est que je ne sais pas comment former l'url à passer en argument pour ces fonctions.

Si tu as une idée je suis plus que jamais preneur.

merci
0
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
24 juin 2006 à 09:19
Salut,
Première étape : rendre visible la ressource partagée du serveur de fichiers sur
le serveur WEB.
Si le serveur de fichier est UNIX/Linux et le serveur WEB UNIX/Linux, utilses
NFS
Si le serveur de fichier est Windows et le serveur WEB UNIX/Linux, utilises
Samba en mode client sur le serveur WEB
Si le serveur de fichier est UNIX/Linux et le serveur WEB est Windows,
mount la ressource comme un disque réseau pour l'utilisateur qui fait tourner
le service WEB
Si tu es de windows à windows, idem que précédement.
Seconde Etape : un fois que le serveur WEB voit la ressource contenant tes
document, tu utilises un chemin local dans file_exists().
A+, crabs
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
26 juin 2006 à 09:39
Merci beaucoup pour cette réponse.

Par contre désolé d'abuser, mais serait-il possible que tu m'aiguilles un peu sur le fonctionnement de NFS stp.

J'ai trouvé ça : http://www.ac-creteil.fr/reseaux/systemes/linux/nfs-linux.html
mais étant donné mon niveau en réseau c'est la galère.

merci encore
0
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
26 juin 2006 à 18:51
Salut,
Etant admin système & réseau spécialisé UNIX, je pense pouvoir te guider. En
revanche je suis pas l'éducation nationnale, donc je suis pas obligatoirement
pédagogue.

Le première chose que tu dois comprendre :
Ton serveur de fichier sera le serveur NFS
Ton serveur WEB sera le client NFS

Pour effectuer la configuration tu dois disposer de l'accès root sur les deux
machines.

Ensuite tu fais en sorte que les machines se connaissent par leur nom et pas
uniquement par les adresses IP.

Et pour terminer, si tu as activé des firewalls logiciels, il faut que tu définisses
des règles de confiance entre les deux machines (le plus simple c'est qu'elles
puissent se causer sur tous les ports avec tous les protocoles). Normalement
si tu as une architecture réseau sécurisé, tes 2 PC sont en DMZ, donc tu
n'introduirais beaucoup de failles de sécurité.

Si tu remplis toutes ces conditions, il faut que tu me fournissent les noms
et versions des systèmes d'exploitation de tes 2 serveurs.

A+, crabs
0
pour_quoi_pas
27 juin 2006 à 09:46
Merci beaucoup pour ces infos.

Malheureusement je suis dans une boite où les infos circulent relativement "mal" (surtout pour ce qui est de leurs serveurs : ils sont un peu difficile sur la sécurité ...).

Du coup j'ai pas d'accès "direct" au serveur de fichiers (seulement via un lecteur réseau).

Si tu pouvais juste m'aiguiller un peu sur ce point stp :
Ensuite tu fais en sorte que les machines se connaissent par leur nom et pas
uniquement par les adresses IP.


Je me débrouillerai pour la suite.
Merci encore pour ces précieux conseils.
0
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
30 juin 2006 à 08:01
Salut,
Il faut pouvoir atteindre la machine avec (par exemple):
ping serveur_fichier
et pas uniquement viaserveur_fichier
ping 192.168.0.1
(si le serveur de fichier s'appelle 'serveur_fichier' et que son adresse IP est
192.168.0.1).
Si tous est sous UNIX/LINUX, il faut soit renseigner les fichiers hosts de
chaque machine, soit renseigner le service de nom pour les hosts : DNS, NIS,
NIS+ ou LDAP.

Si tu n'es pas administrateur des serveurs, il va falloir que tu demandes à tes
admins...
A+, crabs
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
27 juin 2006 à 09:49
Une dernière chose : sais tu pourquoi les liens de types file:// ne passe pas avec firefox (et s'il y a une solution pour pallier à ce problème).

merci
0
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
30 juin 2006 à 08:04
Salut,
Perso j'ai pas de souci avec file://
peux-tu donner le contenu de ta barre d'adresse. Il me semble que le chemin
doit être écrit avec de / et non des \, mais j'ai pas de Windows pour vérifier...
A+, crabs
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
27 juin 2006 à 12:12
Une petite précision :
j'arrive bien à "pinguer" le serveur de fichiers depuis le serveur Web (aussi bien avec l'ip qu'avec le nom)
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
30 juin 2006 à 11:00
Merci

Pour les file:// en fait j'utilise des liens en html (href=file://...) et ça passe pas avec firefox => ça me génère une erreur dans la console javascript mais c'est bon en fait il paraitrait que c'est inutilisable (sécurité, sécurité) et que la désactivation de l'option responsable de ce blocage n'a aucun effet dans les versions 1.5 et supérieures.

Source :
https://quality.mozilla.org/

Sinon une dernière question : est-il possible de monter un accès ftp sur un serveur samba (c'est une question très bizarre non ?) ou encore, y-a-t-il un moyen d'accéder au contenu de ce serveur via une url du type smb://chemin/fichier.ext par exemple ??
0
pour_quoi_pas
Messages postés
40
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
25 août 2006
10
10 juil. 2006 à 16:41
Ca y est c'est résolu.

Du coup je m'en suis tiré avec un smbmount sur le serveur d'applis et comme ça j'accède à mes fichiers via des adresses relatives.

Meci à vous.
0
$MonFichier= "\\\\SERVEUR_ou_IP\dossier\\123\\016\\xml\\123_016_monfichier.xml" ;
if (file_exists($MonFichier)) echo "$MonFichier existe, ok" ;
else
echo "$MonFichier n est pas la, niet niet niet, sniiif maispourquoi euh !" ;


note : vous remarquerez les doubles slashs a certain moment ; c est l astuce, en fait cela evite que \suivi d un chiffre, ne soit transforme en un obscure caractere (en fonction du type de serveurs de fichier en plus)

voili voilou, chez moi cela marche en tout cas

cheers
0
bonjour je viens sur ce forum avoir une aide de votre part, je voudrais juste savoir qu'elle sont les serveur de fichier qui existe je connais juste filezilla serveur; samba, zimbra je voudrais donc savoir s'il ya d'autre qui sont open source qui sont utilisable soit sur Linux ou Windows merci de vos réponses.
0