2017-01-23 20 views
-1

フロントエンドにzipファイルを送信しようとしていますので、ブラウザにダウンロードできます。フロントエンドにzipファイルを送信してDRFでダウンロードする方法

Zipファイルには、内部のフォルダを持っており、これらのフォルダは、ファイルを持っている:

file.zip 
    - first folder 
     - file1.pdf 
     - file2.pdf 
    - second folder 
     - file3.pdf 

私は、私はこれを実行しようとしましたので、最初の応答として送信するためにバイトにファイルを変換する必要があると思う:

zip_file = ZipFile(zip_file_path) 

zip_byte_array = bytearray() 
for filename in zip_file.namelist(): 
    byte_content = zip_file.read(filename) 
    zip_byte_array.append(byte_content) 

return Response(zip_byte_array) 

のByteArrayに追加しながら、それは次のエラーを与える:

an integer is required 

フォルダ

zip_file_path = shutil.make_archive(dir_path, 'zip', dir_path) 

これを修正するにはどうすればよいですか?

答えて

1

OKが、それは思ったよりも少し簡単ですが判明しました。私はこれを簡単に行うことができます:

zip_file = open(zip_file_path, 'rb') 

response = HttpResponse(zip_file, content_type='application/zip') 
response['Content-Disposition'] = 'attachment; filename=name.zip' 

return response 
0

appendは、配列に項目を追加する操作として最もよく理解され、bytearrayは数値シーケンスであるため、付加されたバイトの値を持つ整数で実行されるものとします。

配列の連結については、単に文字列のように、+演算子を使用します。

zip_byte_array += byte_content 
関連する問題