Python Flask WebApp застегивает несколько больших файлов на основе выбора пользователя, но пользователь не знает, если оPython

Программы на Python
Anonymous
Python Flask WebApp застегивает несколько больших файлов на основе выбора пользователя, но пользователь не знает, если о

Сообщение Anonymous »

Запуск веб -приложения Python Python, который застегивает ряд файлов и обслуживает их пользователю на основе фильтров пользователя. Файлы и создание молнии начинаются, но это может занять минуты. Пользователь не узнает, повешен ли он. работает над этим. Проблема с этим заключается в том, чтобы использовать раздел загрузки браузера (маленькое всплывающее окно или страница загрузки с панелями прогресса), вам необходимо предоставить заголовок длины содержимого, но мы не знаем размер файла ZIP, потому что он, потому Он еще не закончил создавать. Я старался изо всех сил, чтобы оценить размер файла ZIP после его завершения, и я подумал, что это было бы легко, так как мой Zip просто Zip_Stored, но есть внутренняя структура Zip, которую я не могу точно измерить. Браузер просто в конечном итоге отвергает загрузку с помощью ERR_Content_length_mismatch. Отдельный /маршрут прогресса, но у меня действительно было сердце, используя раздел загрузки браузеров, и на данный момент это точка гордости. Я также мог бы просто не транслировать его, а затем, поскольку он создается, используйте SSE для предоставления обновлений на ZIP, затем, как только он закончен, отправьте его с заголовком длины содержимого ... не так хорошо, как я хотел бы, чтобы это было хотя . < /p>
def calculate_total_size(filenames):
total_size = 0
for file in filenames:
matching_filepath, _ = get_file_info(file)
if matching_filepath:
total_size += os.path.getsize(matching_filepath)

# Add overhead for ZIP file structure (22 bytes per file + 22 bytes for the central directory)
total_size += 22 * (len(filenames) + 1)
return total_size

def generate_file_entries(filenames):
for file in filenames:
matching_filepath, filename = get_file_info(file)
if matching_filepath:
file_stat = os.stat(matching_filepath)
modified_at = datetime.utcfromtimestamp(file_stat.st_mtime)
with open(matching_filepath, 'rb') as f:
chunk = f.read()
if isinstance(chunk, bytes): # Ensure only bytes are yielded
yield filename, modified_at, 0o600, ZIP_64, [chunk]
else:
print(f"Unexpected data type for file contents: {type(chunk)}")


Подробнее здесь: https://stackoverflow.com/questions/794 ... ion-but-th

Вернуться в «Python»