2016-09-22 1 views
3

Je travaille sur un SDK qui valide et enregistre les fichiers entrants multipart/form-data sur le disque côté serveur. Quelque chose comme:Objet de requête http générique de téléchargement de fichier entrante pour tous les frameworks python

sdk.upload(httpRequest, destinationPath, validationOptions) 

J'ai besoin de la requête entrante http pour: le nom du champ, le nom du fichier, le fichier et le type mime.

Le problème est que les cadres de python ont des objets de requête http:

  • Django: HttpRequestrequest.FILES contient les fichiers
  • Flask: requestrequest.files contient les fichiers. La pyramide: request.POST contient les fichiers.

Identique à un objet de valeur de fichier du dictionnaire files, qui a des structures différentes. Ce dont j'ai besoin, c'est d'un objet de requête http unifié/générique ou d'une autre solution pour gérer cela d'une certaine manière.

solutions peu pratiques possibles:

  • ont différentes implémentations pour chaque cadre: Je veux le gérer de façon générique.
  • Analyse de multipart/form-data avec un lib: Il s'agira en fait d'une ré-analyse car le framework l'a déjà analysé une fois.

Exemples dans d'autres langues:

  • PHP: objet $ _FILES
  • de NodeJS: demande de flux Lisible
  • ASP.NET: statique HttpContext.Current.Request
+0

@ martijn-pieters Pourriez-vous me fournir quelques questions pour m'aider avec ce problème "trop ​​large"? Les réponses à vos questions seront ajoutées en tant que détails dans ma question principale pour ne pas le rendre trop large. Cela m'aidera à comprendre pourquoi cette question est trop large. Merci. –

+0

Salut Florin! Bienvenue dans la politique de StackOverflow. Martjin préfère que les questions soient très bien définies. Comme pouvez-vous donner un exemple de code et mettre le commentaire là-bas "C'est ce que je veux avoir lieu dans ce point." 'Comme exemple pour Flash et Pyramid. Modifiez votre question et elle sera rouverte. –

Répondre

1

Tous les frameworks implémentent le protocole WSGI https://www.python.org/dev/peps/pep-0333/. C'est le mécanisme sous-jacent commun et ils ont construit leurs propres fonctions de confort au-dessus de cela. Vous pouvez toujours revenir à WSGI brut.

Après le téléchargement a été processus il y a un cadre commun pour stocker et traiter le fichier: Dépôt http://depot.readthedocs.io/en/latest/

Par exemple, vous pouvez saisir des données WSGI brutes et de générer l'objet de demande de WebOb sur dans chaque cadre http://webob.org/

Voir également Authomatic pour les inspirations http://peterhudec.github.io/authomatic/

+0

Impossible de comprendre comment générer une requête WebOb dans Django. Avez-vous un exemple? –