Загрузка файлов в Google Application Engine с использованием Django - PullRequest
3 голосов
/ 28 марта 2010

Я использую Gae с Django. У меня есть проект под названием MusicSite с следующим отображением URL-

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),
)

Внутри MusicFun есть приложение MusicSite со следующим 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)

теперь при загрузке файла с помощью / start и нажмите «Отправить», чтобы перейти на пустую страницу со следующим URL-

.
localhost:8000/_ah/upload/ahhnb29nbGUtYXBwLWVuZ2luZS1kamFuZ29yGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxgHDA

Эти случайные алфавиты постоянно меняются, но результат один и тот же. Пустой страница после каждой загрузки. Кто-нибудь, пожалуйста, помогите.

Ответы сервера как ниже-

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 -

1 Ответ

3 голосов
/ 28 марта 2010

Ваш обработчик загрузки возвращает 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.

Это почти наверняка, потому что это вызывает исключение; вам нужно убедить Django записать исключение, чтобы увидеть, что происходит не так Поочередно лови и регистрируйся сам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...