2015-01-30 2 views
0

내 views.py에 함수가 있습니다. 내가 파일에 버퍼 인터페이스가 없습니다.

TypeError: file doesnot have buffer interface 

내가 'RB'개방 모드를 변경하려고 말하는 오류가 SimpleUploadedFile 객체를 생성하면서이

from django.core.files.uploadedfile import SimpleUploadedFile 
def get_file(self, url): 
    # pdb.set_trace() 
    result = urllib.urlretrieve(url) 
    fi = open(result[0]) 
    fi_name = os.path.basename(url) 
    suf = SimpleUploadedFile(fi_name, fi) 
    return suf 

같다. 하지만 여전히 동일한 오류가 발생합니다 Plz 도와주세요

답변

4

은 파일 개체가 아니라 실제 파일 콘텐츠가 필요합니다. 그래서 당신은 다음과 같은 코드를 고칠 수 : 당신은 당신이 다음 열고 읽을 수 있어야합니다 로컬 임시 파일에 내용을 저장 urlretrieve를 사용하는 이유를 모르겠어요하지만

suf = SimpleUploadedFile(fi_name, fi.read()) 

내가 말을해야합니다. 더 나은 urlopen를 사용하고 직접 전달하는 방법 :

result = urllib.urlopen(url) 
fi_name = os.path.basename(url) 
suf = SimpleUploadedFile(fi_name, result.read()) 
-1

는 요청 lib에, 지칠대로 지친 엘 캐피 탄에서이 문제를했다. 소켓 레이어에서 memoryview()로 변환하면 HTTP 내용으로 유니 코드를 전달할 때 문제가 발생하는 것으로 보입니다. 그냥 모든 것을 일반 문자열로 전달하여 나를 고정 시켰습니다.

관련 문제