Download fichier sur serveur

Résolu
pour_quoi_pas Messages postés 40 Statut Membre -  
 jeffnjd -
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

  1. crabs Messages postés 909 Statut Membre 507
     
    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
  2. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  3. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  4. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. crabs Messages postés 909 Statut Membre 507
     
    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
  7. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  8. crabs Messages postés 909 Statut Membre 507
     
    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
  9. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  10. crabs Messages postés 909 Statut Membre 507
     
    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
  11. pour_quoi_pas
     
    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
    1. crabs Messages postés 909 Statut Membre 507
       
      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
  12. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
    1. crabs Messages postés 909 Statut Membre 507
       
      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
  13. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  14. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
  15. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    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
    1. vincseize
       
      $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
  16. jeffnjd
     
    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