12
votes

Rackspace Cloud Fichiers: Téléchargement d'image sur les fichiers de cloud rackspace en utilisant php

Je fais un projet où l'utilisateur peut télécharger des images comme une image de profil ou une image pour leur galerie d'image. À l'heure actuelle, sa téléchargement de toutes les images sur mon serveur.

Maintenant, je veux télécharger toute cette image dans mes fichiers Cloud de RackSpace à l'aide d'un script PHP. Par exemple:

  1. Utilisateur Sélectionnez un fichier
  2. Appuyez sur Soumettre avec quelques informations
  3. Le fichier sélectionné sera téléchargé sur le serveur de rackspace et renvoie l'emplacement du fichier.
  4. Ensuite, l'emplacement de fichier avec d'autres informations sera enregistré dans ma base de données.
  5. alors je montrerai le fichier ou l'image de cet emplacement.

    Alors avez-vous une idée, exactement comment je peux faire cela?

    J'utilise:

    • Cadre CodeIndring
    • jQuery comme bibliothèque JavaScript

      Merci d'avance pour toute réponse.


0 commentaires

4 Réponses :


19
votes

Mise à jour: bien que la méthode que je décris ci-dessous fonctionne toujours, il n'est pas possible de télécharger des fichiers directement à l'aide de jetons (grâce à DesignerGuy pour cette information ). Vous pouvez en savoir plus sur la façon de faire ce que ici . Je devrais également mentionner que ces services tels que Transloadit rendent maintenant ce genre de chose de manière triviale facile à utiliser JQuery Inserts dans des formulaires HTML. Toujours la méthode que je décris ci-dessous fonctionne toujours et vous donne probablement le meilleur contrôle.

Vous ne pouvez pas charger des fichiers -Directement aux fichiers de racks, sans essayer quelque chose comme l'intégration de vos informations d'identification de votre espace de rack dans le formulaire. Même si cela était possible, ce ne serait pas une bonne idée. (C'est-à-dire que l'utilisateur pourrait ajouter un contenu massif à l'aide de vos informations d'identification qui n'ont rien à voir avec votre application). Donc, pour obtenir ce que vous voulez, ce qui est essentiellement au fichier stocké sur RackSpace et l'emplacement du fichier stocké dans votre serveur, vous devez modifier votre flux de travail. Il doit être:

  1. Formulaire de téléchargement de fichier sur -Votre serveur -
  2. -Votre serveur - calculé le conteneur et le nom de fichier que le fichier utilisera
  3. -Votre serveur- télécharge le fichier temporaire sur les fichiers de racks

    Si vous souhaitez que le fichier soit téléchargeable publiquement ...

    1. -Votre serveur - active le fichier à servir via le CDN, faisant une URL publique pour le fichier que votre utilisateur peut accéder.
    2. Lorsque votre serveur crée HTML, il incorpore les URL CDN et l'utilisateur obtient par magie les fichiers

      Si vous voulez que le fichier soit uniquement téléchargeable par -Certaine, des utilisateurs ....

      1. -Votre serveur- authentifie avec rackspace et télécharge le fichier temporairement
      2. -Votre serveur- sert le fichier et le code HTML à partir de votre serveur

        Vous ne payez pas la bande passante entre -Votre fichiers de serveur et de racks, si -Votre serveur est également une instance de cloud rackspace ou un serveur géré de racks régulier (ou au moins c'est ce que le support client m'a dit). Un fait important lors du calcul des tarifs entre Amazon et Rackspace.

        Vous pouvez donc utiliser des fichiers rackspace comme un disque dur massif pour votre serveur, ce qui vous donne le contrôle sur l'accès, ou vous pouvez l'utiliser comme un réseau de distribution public massif ... Mais dans les deux cas, vous devrez peut-être modifier l'ordre de vos étapes pour vous donner ce que vous voulez ...

        Vous pouvez également regarder Un exemple simple d'utilisation de PHP pour télécharger un fichier recueillé à partir d'un formulaire HTML aux fichiers de racks .


2 commentaires

Grande réponse - merci! Devra vérifier cet exemple simple ailleurs (compte suspendu). Peut-être que c'est sur la machine de navigation. Dans mon cas, j'ai une application iOS que je préférerais poster des fichiers directement aux fichiers de rackspace. Bien sûr, nous ne pouvons pas avoir la clé d'accès dans l'application! Je me souviens de Facebook utilisé pour avoir un mécanisme par lequel un jeton pourrait être généré sur un serveur (via SSL Demande), puis utilisé par l'application pour une durée limitée. Il n'a jamais été sauvé à l'air ouvert (seulement sur le porte-clés sécurisé). Peut-être qu'il y a un moyen de faire cela pour les fichiers de rackspace? Je ne sauverais même pas le jeton. Il suffit d'l'utiliser au besoin.


Vous pouvez télécharger un fichier directement sur CloudFiles maintenant. Vous créez une jeton / une signature pour la demande et pouvez utiliser un formulaire à soumettre directement. Voir docs.rackspace.com/files/api / V1 / CF-DevGuide / Contenu / ...



1
votes

de welcome.php: xxx

de welk_message.php: xxx

problèmes que j'ai rencontrés:

cacert.pem ~ Ce fichier doit aller dans votre répertoire Web et est livré avec l'API.

Vous aurez peut-être besoin de FileInfo de PECL, et pour cela, vous avez peut-être besoin de libmagique (si vous ne l'avez pas déjà) .

Vous avez également besoin du package PHP5-CURL, et PHP ne signalez pas les erreurs de courbure, donc creuser dans l'API et ajoutez une certaine sortie si elle ne fonctionne pas.


0 commentaires

0
votes

Je viens de faire avec quelque chose de similaire. Je pensais ajouter mes conclusions à ce post.

Premièrement, placez le package CloudFiles dans votre annuaire de l'application / des bibliothèques: https://github.com/rackspace/php-cloudfiles

Découvrez cette classe d'intégration simple. En outre, placez-le dans les bibliothèques. https://bitbucket.org/modomg/codeigniter-Rackspace-cloudfiles

acclamations, Jeff Walters


0 commentaires

2
votes

Beaucoup de ces réponses sont vieilles et en regardant La réponse d'orbite Je pense qu'il digne de nombreuses modifications apportées à l'API depuis. Et puisque Ftrotter a déjà expliqué à propos d'essayer de télécharger directement, je vais vous montrer une version mise à jour (style PHP 5.3) de comment Envoyez les fichiers du répertoire PHP TMP.

Nous supposerons d'abord que vous avez déjà installé l'API à l'aide du compositeur.

Vous devez d'abord inclure leur autoloadeur, puis ajouter le utiliser < / code> espace de noms. xxx

alors vous définissez simplement l'instance client xxx

maintenant que vous avez votre conteneur que vous pouvez Définissez simplement votre tableau de fichiers et téléchargez-les. Voici une manière rapide et sale: xxx

Vous garderez que vos fichiers conserveront leurs noms existants lorsqu'ils se retrouvent dans le conteneur et vous pouvez obtenir le chemin de l'URL publique de votre conteneur. à partir de l'intérieur du portail de nuage de rackspace.


2 commentaires

Cela ne fonctionne pas et dit "Argument manquant 2 pour Opengloud \ ObjectStore \ Resource \ Contener :: UploadObject (),"


@ kamlesh.bar il devrait être uploadObjects () (pluriel). Mon exemple utilise uploadObjects () laissez-moi savoir si cela aide