1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import io def contract_download(download_urls): ''' downloads_urls 要批量下载并且压缩的文件 ''' s = io.BytesIO() temp = tempfile.TemporaryDirectory() zip = zipfile.ZipFile(s, 'w') for i in download_urls: f_name = "{}.pdf".format(i['name']) local_path = os.path.join(temp.name, f_name) ur.urlretrieve(i['download_url'], local_path) zip.write(local_path, f_name) zip.close() s.seek(0) wrapper = FileWrapper(s) response = HttpResponse(wrapper, content_type='application/zip') response['Content-Disposition'] = 'attachment; filename={}.zip'.format(datetime.datetime.now().strftime("%Y-%m-%d")) return response
download_urls = [{"name":"pdf1","download_url": "http://xxx.pdf"}, {"name":"pdf2", "download_url": "http://xxx2.pdf"}] contract_download(download_urls)
|