2017-09-06 22 views
0

画像をアップロードする次のビューがありますが、生成された画像が壊れています。アップロード画像django rest framework corrupted

class FileUploadView(views.APIView): 
    parser_classes = (parsers.FileUploadParser,) 

    def uploadFile(self, up_file): 
     if not os.path.exists(BUILDING_PHOTOS_FOLDER): 
      os.mkdir(BUILDING_PHOTOS_FOLDER) 
     file_name = '{}.jpeg'.format(uuid.uuid4()) 

     destination = open(
      '{}/{}'.format(BUILDING_PHOTOS_FOLDER, file_name), 'wb+') 
     for chunk in up_file.chunks(): 
      destination.write(chunk) 
      destination.close() 

    def put(self, request, filename, format=None): 
     file_obj = request.data['file'] 
     self.uploadFile(file_obj) 
     return HttpResponse(status=204) 

答えて

0

こんにちはあなたはformat=jpegセットとFILE_NAMEを追加する必要がありますが、request.FILES [ 'ファイル']

def put(self, request, filename, format=None): 
     file_obj = request.FILES['file'] 
     self.uploadFile(file_obj) 
     return HttpResponse(status=204) 
+0

ありがとうございました。私は試してみましたが動作していません –

+0

あなたは何かエラーがありますか? – Robert

+0

raise例外は発生しませんが、生成されたファイルは壊れています。 –

0

からファイルを取得する必要がある。この

def uploadFile(self, f): 
     filename = f.name 
     redington_path = settings.MEDIA_ROOT + '/yourpath/' 
     if not os.path.exists(redington_path): 
      os.makedirs(redington_path) 
     BASE_PATH = settings.MEDIA_ROOT + '/yourpath/' 
     os.mkdir(os.path.join(BASE_PATH, vendorid)) 
     with open(BASE_PATH + filename, 'wb+') as destination: 
      for chunk in f.chunks(): 
       destination.write(chunk) 

のように試すことができなければなりませんbe up_file.name クラスFileUploadView(views.APIView): parser_classes =(pars ers.FileUploadParser、)

def uploadFile(self, up_file): 
     if not os.path.exists(BUILDING_PHOTOS_FOLDER): 
      os.mkdir(BUILDING_PHOTOS_FOLDER) 
     up_file.name 
     file_name = up_file.name 

     destination = open('{}/{}'.format(BUILDING_PHOTOS_FOLDER, file_name), 'wb+') 
     for chunk in up_file.chunks(): 
      destination.write(chunk) 
      destination.close() 

    def put(self, request, filename, format='jpeg'): 
     file_obj = request.data['file'] 
     self.uploadFile(file_obj) 
     return HttpResponse(status=204) 
+0

ありがとうございます。私は試してみますが動作しません –

0

最後に、画像をフロントエンドから生のバイナリとして送信することを解決します。

関連する問題