2010-10-11 8 views
5

estoy usando los pilones para cargar una imagen y almacenarla en el disco:error "AttributeError: 'unicode' objeto no tiene atributo 'leer'" en la carga de archivos de

<form method="post"> 
<input type="file" name="picture" enctype="multipart/form-data" /> 
</form> 

Luego, en mi regulador:

if 'picture' in request.POST: 

    i = ImageHandler() 

    #Returns full path of image file 
    picture_file = i.makePath() 

    shutil.copyfileobj(request.POST['picture'],picture_file) 

Pero yo recibir el error: AttributeError: 'unicode' objeto no tiene atributo de 'leer'

lo que está pasando aquí? Gracias por tu ayuda.

Respuesta

3

Ambos argumentos a copyfileobj ahora son cadenas, mientras que las funciones toman archivos (u "objetos similares a archivos") como argumentos. Hacer algo como

picture_file = open(i.makePath(), 'w') 

(o simplemente picture_file = i, no está seguro de lo que su clase es como ImageHandler), entonces

shutil.copyfileobj(request.POST['picture'].file, picture_file) 
+0

Gracias. Todavía consigo el mismo error, sin embargo. ¿Podría ser un problema con mi primer argumento? ¿O es request.POST ['picture'] correcto como es? – ensnare

+0

Acabo de revisar mi respuesta. –

+0

Esto es tan extraño, cuando hago eso, obtengo: AttributeError: el objeto 'unicode' no tiene ningún atributo 'archivo' – ensnare

Cuestiones relacionadas