3 votes

Téléchargement de fichiers dans Google Application Engine à l'aide de Django

J'utilise gae avec django. J'ai un projet nommé MusicSite avec le mappage d'url suivant-

urls.py

from django.conf.urls.defaults import *
from MusicSite.views import MainHandler
from MusicSite.views import UploadHandler
from MusicSite.views import ServeHandler

urlpatterns = patterns('',(r'^start/', MainHandler),
        (r'^upload/', UploadHandler),
        (r'^/serve/([^/]+)?', ServeHandler),
)

Il existe une application MusicSite à l'intérieur de MusicFun avec les caractéristiques suivantes codes-

views.py

import os
import urllib

from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

def MainHandler(request):
     response=HttpResponse()
     upload_url = blobstore.create_upload_url('http://localhost:
8000/upload/')
     response.write('<html><body>')
     response.write('<form action="%s" method="POST"
enctype="multipart/form-data">' % upload_url)
     response.write("""Upload File: <input type="file"
name="file"><br> <input type="submit"
         name="submit" value="Submit"> </form></body></html>""")
     return HttpResponse(response)

def UploadHandler(request):
     upload_files=request.FILES['file']
     blob_info = upload_files[0]
     response.redirect('http://localhost:8000/serve/%s' %
blob_info.key())

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
 def get(self, resource):
     resource = str(urllib.unquote(resource))
     blob_info = blobstore.BlobInfo.get(resource)
     self.send_blob(blob_info)

Maintenant, chaque fois que je télécharge un fichier en utilisant /start et que je clique sur Submit, je suis dirigé vers une page blanche avec l'url suivante et que je clique sur Submit, j'arrive sur une page blanche avec l'url suivante-

localhost:8000/_ah/upload/ahhnb29nbGUtYXBwLWVuZ2luZS1kamFuZ29yGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxgHDA

Ces alphabets aléatoires varient sans cesse, mais le résultat est le même. Une page page blanche après chaque téléchargement. Quelqu'un peut m'aider.

Les réponses du serveur sont les suivantes

INFO:root:"GET /start/ HTTP/1.1" 200 -
INFO:root:"GET /favicon.ico HTTP/1.1" 404 -
INFO:root:Internal redirection to http://localhost:8000/upload/
INFO:root:Upload handler returned 500
ERROR:root:Invalid upload handler response. Only 301, 302 and 303
statuses are permitted and it may not have a content body.
INFO:root:"POST /_ah/upload/
ahhnb29nbGUtYXBwLWVuZ2luZS1kamFuZ29yGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxgCDA
HTTP/1.1" 500 -
INFO:root:"GET /favicon.ico HTTP/1.1" 404 -

3voto

Nick Johnson Points 79909

Votre gestionnaire de téléchargement renvoie un message 500 :

INFO:root:Upload handler returned 500
ERROR:root:Invalid upload handler response. Only 301, 302 and 303 statuses are permitted and it may not have a content body.

C'est très certainement parce qu'il lance une exception ; vous devez persuader Django d'enregistrer l'exception pour que vous puissiez voir ce qui ne va pas. Vous pouvez aussi l'attraper et l'enregistrer vous-même !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X