Я пытаюсь создать одно приложение flask для управления документами, где все документы будут находиться в одной папке. когда пользователь захочет загрузить документы, я создам один zip-архив для всех документов, и этот zip-файл вернется с использованием send the file.
@app.route('/adminAction', methods=['POST', 'GET'])
def adminAction():
status = request.args.get("act")
if status == "print":
db.createZip(user_sub, files)
return send_file('Document.zip', mimetype='zip', attachment_filename='Document.zip', as_attachment=True)
else:
db.deleteFiles(user_sub)
return redirect("admin")
return render_template("AdminDashboard.html", files = files)
Ошибка выдачи разрешения после печати какой-то строки
file zipped
file deleted
file zipped
127.0.0.1 - - [21/Jun/2020 11:55:53] "GET /adminAction?act=print HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\Raviraj Pawar\PycharmProjects\AmirBusiness\VirtualEnv\lib\site-packages\flask\app.py", line 2464, in __call__
File "C:\Users\Raviraj Pawar\PycharmProjects\AmirBusiness\DatabaseHelper.py", line 101, in createZip
os.remove(user_sub + file)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\Raviraj Pawar\\PycharmProjects\\AmirBusiness\\Uploaded Documnet\\amirkanai1\\paddy-20200621-060101.pdf'
EDITED PART: - изменена функция createZip и создана новая функция для удаления файла добавлено 10 se c время сна. Пользователь должен получить запрос на выполнение операции.
def createZip(user_sub, files):
zipf = zipfile.ZipFile('Document.zip', 'w', zipfile.ZIP_DEFLATED)
for file in files:
zipf.write(user_sub + file)
zipf.close()
print("--------zip file created and moved to trash--------")
return None
def deleteFiles(user_sub):
time.sleep(10)
for filename in os.listdir(user_sub):
os.remove(user_sub + filename)
print("deleted ", filename)
return None
Любая помощь, предложение будет оценено.