2017-11-13 21 views
0

DJANGOフレームワークでこのコードを使用して、一部のユーザーが画像をダウンロードできるようにしました。 このコードはうまく動作し、ダウンロードするたびにイメージをダウンロードして、一部のユーザーをダウンロードしてください。django zipファイルで画像をダウンロード

しかし、このコードは絶対的なイメージをダウンロードします。私はこのイメージを任意のユーザーのダウンロード用に圧縮する必要があります。

def download_image(request, id): 
    product_image=MyModel.objects.get(pk=id) 
    product_image_url = product_image.upload.url 
    wrapper = FileWrapper(open(settings.MEDIA_ROOT+ product_image_url[6:], 'rb')) 
    content_type = mimetypes.guess_type(product_image_url)[0] 
    response = HttpResponse(wrapper, content_type=content_type) 
    response['Content-Disposition'] = "attachment; filename=%s" % product_image_url 
    return response 

zipファイルで画像をダウンロードするには、このコードを変更するのは簡単ですか?

+0

あなたがファイルを圧縮するPythonライブラリを使用し、その後のHttpResponseとしてそのファイルを返すことができます) –

+0

@mohammedqudahダウンロード – Mar

答えて

2

次のことを試してみてください。

def download_image(request, id): 
    product_image=MyModel.objects.get(pk=id) 
    product_image_url = product_image.upload.url 

    image_path = settings.MEDIA_ROOT+ product_image_url[6:] 
    image_name = 'whatevername.png'; # Get your file name here. 

    with ZipFile(export.zip, 'w') as export_zip: 
     export_zip.write(image_path, image_name) 

    wrapper = FileWrapper(open('export.zip', 'rb')) 
    content_type = 'application/zip' 
    content_disposition = 'attachment; filename=export.zip' 

    response = HttpResponse(wrapper, content_type=content_type) 
    httpResponse['Content-Disposition'] = content_disposition 
    return response 
+0

を使用する最初の時間は素敵に見えるが、中華鍋をしませんか?私のケースでは私のfir – Mar

+0

なぜですか?リクエストごとに1つのイメージのみを圧縮する必要がありますか? – Daniel

+0

この場合yes画像が必要です 'インスタンスではなく文字列でなければならない'エラーメッセージ – Mar

関連する問題