2010-02-01 10 views
1

J'ai un scénario dans lequel j'ai une page sur un serveur qui invite un utilisateur à télécharger un fichier. J'ai besoin que ce fichier soit téléchargé sur un serveur différent avec une installation de stockage plus grande. J'ai alors besoin d'obtenir le chemin absolu de l'endroit où le fichier se trouve maintenant sur le serveur renvoyé à la page d'origine.Télécharger le fichier sur le serveur distant (PHP)

La taille du fichier sera d'environ 15 Mo, donc ce ne sont pas de petits fichiers, et je voudrais éviter le double téléchargement si possible (téléchargement sur le serveur, puis transfert vers le serveur distant).

Toute direction à ce sujet est appréciée.

Répondre

3

Si le serveur distant fonctionne également en tant que serveur Web, vous pouvez créer le formulaire de téléchargement et envoyer l'action de soumission à l'autre serveur. L'inconvénient est que certains navigateurs considèrent cela comme un trou de sécurité potentiel et avertissent l'utilisateur lorsque la page est affichée, mais vous pouvez contourner ce problème en créant une entrée proxy inverse dans votre serveur Web principal qui pointe vers le serveur de fichiers.

+0

Compte tenu de la taille importante du fichier, y at-il un moyen de donner à l'utilisateur un retour d'informations en cours de téléchargement via une barre de progression? Ou est un GIF de chargement tournant le meilleur que je vais obtenir? – BlueVoid

+0

La manière la plus simple d'avoir une barre de progression est d'utiliser un téléchargeur basé sur le flash. comme jcUpload ou swfUpload. –

+0

Il n'y a pas d'alternative sans flash? – BlueVoid

0

Si le deuxième serveur peut être accessible à partir du Web, il suffit ensuite de publier le formulaire html sur le serveur de stockage, puis de le rediriger vers le premier serveur Web. Pendant la redirection, vous pouvez renvoyer des variables supplémentaires via la chaîne de requête GET.

2

Vous pouvez télécharger le fichier directement sur le serveur de stockage, en spécifiant une clé unique sous la forme cachée comme:

<form action="http://mystorage.com/upload" method="post"> 
    <input type="file" name="myfile" /> 
    <input type="hidden" name="key" value="asdf1234sadfasfd34565xx" /> 
</form> 

Ensuite, envoyez simplement une demande RESTful du serveur de stockage à votre serveur principal, indiquant l'unique, key et le chemin absolu ... ou récupérez le chemin absolu en "demandant" à votre serveur de stockage lorsque le serveur principal doit connaître l'emplacement du fichier ... des possibilités illimitées à venir!

Questions connexes