2010-07-02 8 views
2

Je ne parviens pas à télécharger un fichier à l'aide de django. Lorsque je clique sur le bouton Soumettre, je reçois "Cette page Web n'est pas disponible La page Web au http://127.0.0.1:8000/results est peut-être temporairement indisponible ou elle a peut-être été déplacée définitivement vers une nouvelle adresse Web." erreur en chrome.Impossible de télécharger le fichier à l'aide de django

Pour le chargement de fichier HTTP requête l'entrée de journal du serveur web correspondant est:

[02/Jul/2010 17:36:06] "POST /results HTTP/1.1" 403 2313 

C'est la forme:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
<title>Content Based Image Retrieval System</title> 
<link rel="stylesheet" href="site-content/css/style.css" /> 
</head> 

<body> 
<div><img src="site-content/images/logo.jpg" /> </div> 
<form name="myform" action="results" method="POST" ENCTYPE="multipart/form-data> 
    <div align="center"> 
    <br><br> 
    <input type="file" size="25" name="queryImage"> 
    <br><input type="submit" value="Search"><br> 
    </div> 
</form> 
</body> 

entrée dans urls.py:

(r'^results$',upload_and_search), 

vue qui gère le téléchargement du fichier:

def upload_and_search(request): 
    if request.method != 'POST' or request.FILES is None: 
     output = 'Some thing wrong with file uploading' 
    handle_uploaded_file(request.FILES['queryImage']) 
    output = 'success' 
    return HttpResponse(output) 

def handle_uploaded_file(f): 
    destination = open('queryImage', 'wb+') 
    for chunk in f.chunks(): 
     destination.write(chunk) 
    destination.close() 

EDIT:

J'ai aussi essayé de changer la ligne de destination destination = open('queryImage', 'wb+') à destination = open(os.environ['TMP']+'\\'+filename, 'wb+'). C'est toujours donner la même erreur. En outre, le fichier que j'essaie de télécharger est inférieur à 2,5 Mo.

EDIT 2:

J'ai ajouté une déclaration d'impression dans la première ligne de upload_and_search .Son rien imprimer. c'est-à-dire que ce n'est même pas entrer dans la fonction. J'ai également vérifié si quelque chose ne va pas avec ma cartographie url en accédant directement à l'url http: // 127.0.0.1:8000/results. Cela fonctionne bien. Je pense qu'il y a un problème avec la configuration du serveur. Je n'ai aucune idée comment configurer ce serveur ou quoi configurer. Je suis coincé! Je n'ai aucune idée de ce qu'il faut faire.

+0

Quels sont les autorisations pour le dire ctory que vous essayez d'écrire queryImage? –

+1

vous avez également une erreur dans ENCTYPE = "multipart/form-data <-missing" – dzida

+0

+1 pour fournir toutes les informations pertinentes dans votre toute première question. On dirait que * quelqu'un * a lu la FAQ. ;-) –

Répondre

0

Essayez ceci:

filename = f['filename'] 
destination = open('%s/%s' % (MEDIA_ROOT, filename), 'wb') 
+0

Non, cela n'a pas fonctionné. Il montre la même erreur. – pecker

2

Je suppose que à cause de CSRF http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

essayez de modifier de

<form name="myform" action="results" method="POST" ENCTYPE="multipart/form-data">{% csrf_token %} 

une vue de générer ce

from django.core.context_processors import csrf 
from django.shortcuts import render_to_response 

def showIndexPage(request): 
    c = {} 
    c.update(csrf(request)) 
    return render_to_response("index.html", c) 
Questions connexes