2009-10-15 6 views
5

J'ai une application web PHP qui permet aux utilisateurs de télécharger des images sur mon site web. Je le fais en utilisant simplement HTML <form enctype="multipart/form-data">Développement Web: Comment puis-je autoriser un utilisateur à télécharger des fichiers directement sur mon CDN (Cachefly)?

Cependant, au lieu d'avoir ces images téléchargées sur mon serveur web - je voudrais télécharger ces images directement sur mon CDN (Cachefly - qui est un autre serveur).

Est-ce possible ... d'avoir une application Web permettant à un utilisateur de télécharger des images directement sur un autre serveur?

Dans le cas où il aide, voici mon code PHP:

$target_path = "/home/www/example.com/uploads/"; 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    // file has been uploaded **LOCALLY** 
    // HOWEVER, instead of it being upload locally, I would like the file 
    // to be directly uploaded to the CDN ('other' server) 
    ... 
} else{ 
    // error: file did not get uploaded correctly 
    .... 
} 

Répondre

0

Bien sûr.

Quelque part dans votre code, il y a une variable "$ target_directory" qui doit être définie. Cela ne s'appellera pas, mais dépendant de la façon dont votre fonction est configurée, elle doit être là-bas. Utilisez simplement un chemin absolu pour le répertoire dans lequel vous voulez que les fichiers atterrissent. Assurez-vous également que le répertoire est CHMOD'd à 777 afin qu'il puisse être écrit.

Postez votre code et je peux vous aider.

+0

J'ai inclus mon code dans le message original – Tim

1

Je ne pense pas qu'il soit possible de télécharger directement sur un autre serveur, mais je peux me tromper. J'ai eu un problème similaire, et j'ai utilisé les fonctionnalités FTP de PHP (http://us3.php.net/manual/en/book.ftp.php). J'ai toujours utilisé mon serveur comme un intermédiaire, ce qui signifie que j'ai téléchargé les fichiers sur mon serveur, puis FTP les a transférés sur le serveur cible, puis supprimé le fichier de mon serveur.

1

Vous pouvez le recevoir sur votre serveur Web, puis le transférer vers le CDN via le partage de fichiers ou FTP. Si le CDN est orienté Web, vous pouvez rediriger la demande vers ce serveur et renvoyer le contrôle à votre serveur Web une fois le fichier téléchargé. Il est probablement préférable de faire le transfert de fichiers à l'arrière et de garder l'utilisateur connecté au serveur Web.

+0

Voilà le point de ma question ...au lieu de le télécharger sur moi puis de le transférer vers mon CDN via FTP ... puis-je simplement télécharger le FORMAT HTML, le télécharger directement sur le CDN? – Tim

5

Je pense que dans le cas d'un CDN ... vous devrez d'abord recevoir des fichiers sur votre serveur puis utiliser le téléchargement de l'API CDN dans leur 'compartiment'. Je ne pense pas que vous pouvez télécharger directement sur un CDN à moins qu'il y ait un moyen de le mapper comme un répertoire sur votre serveur.

+0

Mon CDN me donne un accès FTP à mon partage de fichiers sur leurs serveurs. Cela fait-il une différence? – Tim

+0

Pas vraiment ... le processus serait: 1: obtenir le fichier téléchargé sur votre serveur. 2: alors écrivez un script PHP peut-être pour envoyer des fichiers batch ou simples au CDN via FTP en arrière-plan. –

+0

Donc, la réponse courte est "Non" - Je ne peux pas avoir un point de téléchargement HTML FORM directement vers un autre serveur pour le téléchargement du fichier. Est-ce exact? – Tim

2
  • Déplacement/Transfert d'un fichier à un service ou pour votre serveur non-accesable directe est généralement fait en utilisant l'API du fournisseur
  • Déplacement/Transfert d'un fichier sur un serveur « propriété » par vous-même peut être fait en utilisant PHP + FTP extensions (pour plus d'informations: pear.php.net ou pecl.php.ne t)
  • Déplacer/télécharger un fichier sur un serveur «possédé» par vous-même et être l'un des nombreux dans un cluster est généralement fait en téléchargeant le fichier temporaire sur 1 serveur et ensuite un .sh, .bash ou tout ce qui est appelé qui active d'autres processus de transfert vers un autre serveur.
+0

Cachefly, le serveur 'autre', me fournit un accès FTP pour télécharger les fichiers vers eux. Donc, pour être sûr de bien comprendre ... Je téléchargerais d'abord le fichier sur mon serveur puis sur FTP vers Cachefly. Donc, ce que vous dites, c'est que je ne peux pas demander à l'utilisateur final d'utiliser le formulaire HTML pour le télécharger directement sur Cachefly. – Tim

+0

Est-ce que j'ai bien compris? – Tim

+0

Juste, je ne connaissais aucune solution qui vous permet de laisser le processus de téléchargement sur votre serveur. –

0

Oui Services web amazon vous permet déjà de télécharger sur Amazon S3 directement à partir du navigateur de l'utilisateur: Documentation: http://doc.s3.amazonaws.com/proposals/post.html

De plus ce seau S3 peut être exposé via amazon CDN (ou tout autre cdn qui peut pointez sur le serveur d'origine d'un client)

+3

C'est une proposition. Pas de "documentation". Tout le monde le sait, l'Amazonie le permet-elle réellement? – Cole

+0

Ce serait bien de le savoir aussi. – xiankai

Questions connexes