2009-03-15 2 views
7

나는 PyAMF을 사용하여 동적으로 생성 된 큰 이미지를 Flex에서 Django로 전송합니다. 장고 쪽에서 나는 매개 변수로 encodedb64 데이터를 수신합니다 :서비스 호출에서 이미지를 게시 할 때 Django의 파일 처리

내 이미지 항목으로 모델 이미지. 내가해야 할 일은 파일 장고 필드로 데이터를 저장하는 것입니다.

def save_item(request, uname, data): 
    """ Save a new item """  
    item = Item() 

    img = cStringIO.StringIO() 
    img.write(base64.b64decode(data)) 
    myFile = File(img) 

    item.preview.save('fakename.jpg', myFile, save=False) 

StringIO에서 내 파일 객체가 같은 모드와 같은 일부 속성이 골대를 벗어났습니다 때문에 작동하지 않을 것입니다 즉, 이름 등

나는 또한 StringIO가 그래서 나쁜있는 완전히 메모리에 이미지 데이터를로드하여 생각

이 특별한 경우에 대해 AMF를 포기하고 POST를 사용할 수 있습니다.

당신은 어떻게 생각하십니까?

답변

9

django.core.files.base에는 ContentFile 클래스가 있습니다. 이 클래스는 기본 Django File 클래스를 확장하므로 StringIO (ContentFile은 내부적으로 사용하지만)가 필요하지 않습니다. 수정 된 저장 방법은 다음과 같습니다.

from django.core.files.base import ContentFile 
def save_item(request, uname, data): 
    item = Item() 
    myFile = ContentFile(base64.b64decode(data)) 
    item.preview.save('fakename.jpg', myFile, save=False) 
관련 문제