Загрузка файла в Django - PullRequest
       4

Загрузка файла в Django

1 голос
/ 02 июня 2011

Я пытаюсь заставить Django загрузить файл (пока все просто), но у меня возникли трудности.Вот весь соответствующий код (который я знаю).Возможно, что-то не так с моим settings.py?Мой код представляет собой кусочки различных ответов о переполнении стека.Я уже проверил здесь .

Когда я выбираю файл (файл ~ 8,5 МБ, потому что видел, что Django делает что-то смешное, если он меньше 2,5 МБ) и нажимаю ОтправитьЯ перешел на страницу «Успешная загрузка», но, похоже, нигде не могу найти свой файл в каталоге моего проекта.

Я использую сервер запуска разработки с apache, запущенным только для обслуживания изображений.

settings.py

MEDIA_ROOT = '/Users/adam/Documents/workspace/sitename/media'
MEDIA_URL = 'http://127.0.0.1:8000/media/'
STATIC_ROOT = '/Library/WebServer/Documents/static/'
STATIC_URL = 'http://10.0.1.15/static/'
ADMIN_MEDIA_PREFIX = '/media/admin/'
STATICFILES_DIRS = (
)

* статический URL-адрес - это адрес моего локального веб-сервера apache.

urls.py

urlpatterns = patterns('',
    ('^$', index),
    ('^uploadfile/$', uploadfile),
    ('^uploadsuccess/$', uploadsuccess),
)

if settings.DEBUG:
    from django.views.static import serve
    _media_url = settings.MEDIA_URL
    if _media_url.startswith('/'):
        _media_url = _media_url[1:]
        urlpatterns += patterns('',
            (r'^%s(?P<path>.*)$' % _media_url,
            serve,
            {'document_root': settings.MEDIA_ROOT}))
    del(_media_url, serve)

views.py

def uploadsuccess(request):
  return render_to_response('uploadsuccess.html', {})

class UploadFileForm(forms.Form):
  file = forms.FileField()

def uploadfile(request):
  if request.method == 'POST':
    form = UploadFileForm(request.POST, request.FILES)
    if form.is_valid():
      handle_uploads(request.FILES['file'])
      form.save()
      return HttpResponseRedirect('/')
  else:
    form = UploadFileForm()

  return render_to_response('fileupload.html', {'form': form}, context_instance=RequestContext(request))

def handle_uploads(file):
  logging.debug("upload_here")
  if file:
    destination = open('/tmp/'+file.name, 'wb+')
    for chunk in file.chunks():
      destination.write(chunk)
    destination.close()

fileupload.html

<html>
<body>

<h1>Upload a file</h1>
<form enctype="multipart/form-data" method="post" action="/uploadsuccess/">
  {% csrf_token %}
  <table>
    {% for field in form %}
      {{ field.label_tag }}
      {{ field }}
    {% endfor %} 
  </table>
  <input type="submit" value="Submit" id="Save"/>
</form>

<body>
</html>

uploadsuccess.html

<html>
<body>

<h1>Upload Successful!</h1>

<body>
</html>

1 Ответ

0 голосов
/ 02 июня 2011

Вы отправляете данные по неправильному URL, change action="/uploadsuccess/" на /uploadfile/.

...