2010-01-28 4 views
2

J'ai écrit une petite application web en python qui me permet de parcourir mes seaux S3. L'application Web s'exécute dans Google App Engine.Un moyen facile de télécharger des fichiers sur S3 via le formulaire HTTP

Maintenant, je veux créer un formulaire html pour cette application web qui me permet de télécharger un fichier dans le compartiment.

Ces informations figurent déjà dans le formulaire: AWSAccessKeyId et le nom du compartiment.

Je veux que le keyname est le nom du fichier qui est sélectionné par l'utilisateur via <input name="file" type="file">

Un autre problème est la suivante: Puis-je créer le contenu des balises d'entrée (cachés) policy et signature avant qu'un fichier est choisi? Je ne veux résoudre ce problème qu'avec HTML et Python. Pas de JavaScript.

Est-ce possible?

Répondre

4

Lire la documentation développeur d'Amazon: Browser Uploads to S3 using HTML POST Forms

Il y a des exemples Python là pour vous aider à démarrer.

+0

Je connais ce document. Mais j'ai toujours un problème. J'ai besoin de deux étapes pour télécharger un fichier vers S3. D'abord, j'ai le formulaire HTML où le fichier est sélectionné. Deuxièmement, j'ai besoin de coder en Base64 le document de politique et de calculer une valeur de signature avec python. Ces valeurs sont incluses dans le formulaire html (?) Et l'utilisateur doit à nouveau envoyer le document. L'utilisateur doit "envoyer" le fichier deux fois? – Neverland

+1

Lisez à nouveau la section sur le nom du champ 'key'. Vous pouvez utiliser le jeton spécial '$ {nomfichier}' pour que S3 définisse le nom de fichier que l'utilisateur télécharge, il n'est donc pas nécessaire d'envoyer le fichier deux fois. Vous n'avez qu'à signer le formulaire une fois et vous pouvez l'utiliser encore et encore jusqu'à ce que vous atteigniez la date d'expiration que vous avez définie. – dar

+0

Maintenant, j'ai cette ligne dans mon document de politique: ["eq", "$ key", "$ {filename}"]. Mais le résultat est: AccessDenied: Non valide en fonction de la stratégie: Échec de la condition de stratégie: ["eq", "$ key", ""] – Neverland

Questions connexes