3

Google App Engine에서 호스팅되는 Python 웹 응용 프로그램 서버에 html <form>을 사용하여 이진 jpeg 파일을 업로드합니다. 서버 메소드는 전체 이미지 (파일 크기/유형 등의 인쇄 통계를 성공적으로 보았습니다)를 수신하지만 Google 클라우드 저장소 버킷에 쓰지 않습니다. GCS 버킷에서 끝나는 것은 단지 48 바이트의 손상된 파일입니다.각 파일에 대해 Google 클라우드 저장소 만 저장 (48 B)

def handleUpload(self): 

    client = self._get_storage_client() 
    bucket = client.get_bucket(config.CLOUD_STORAGE_BUCKET) 

    results = [] 

    for name, fieldStorage in self.request.POST.items(): 
    if type(fieldStorage) is unicode: 
     continue 
    result = {} 
    fileName = urllib.unquote(fieldStorage.filename) 
    blob = bucket.blob(fileName) 

    blob.upload_from_string(
     str(fieldStorage.file),fieldStorage.type) 

    url = blob.public_url 
    if isinstance(url, six.binary_type): 
     url = url.decode('utf-8') 

    results.append(result) 

    return results 

답변

0

알아 냈어. 실제로는 전체 파일이 아닌 임시 버퍼를 사용하여 파일을 한 번에 읽으므로 fieldStorage.file 대신 fieldStorage.file.read()를 사용해야합니다.