Выдержки из интерфейса
Код: Выделить всё
[i][/i]
Add PDFs
[i][/i]
Upload your PDFs here:[/b] Click to select, or drag and drop
`
Код: Выделить всё
def save_uploaded_file(file, directory, filename=None):
app.logger.debug(f"[{session_id}-{timestamp}-APP]-- save_uploaded_files activated for {file}")
if file and file.filename:
filename = filename or file.filename
filename = secure_filename(filename)
filepath = os.path.join(directory, filename)
file.save(filepath)
return filepath
return None
@app.route('/')
def index():
return render_template('index.html')
@app.route('/create', methods=['GET', 'POST'])
def create():
if request.method == 'GET':
return render_template('index.html')
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
session_id = str(uuid.uuid4())[:8]
try:
# Create temporary working directory in ./tempfiles/{timestamp}:
if not os.path.exists('tempfiles'):
os.makedirs('tempfiles')
temp_dir = os.path.join('tempfiles', session_id)
os.makedirs(temp_dir)
app.logger.debug(f"[{session_id}-{timestamp}-APP]-- Temporary directory created: {temp_dir}")
# Save uploaded files
app.logger.debug(f"[{session_id}-{timestamp}-APP]-- ******************Gathering uploads******************")
files = secure_filename(request.files.getlist('files'))
input_files = []
for file in files:
if file.filename:
filepath = save_uploaded_file(file, temp_dir)
if filepath:
input_files.append(filepath)
app.logger.debug(f"[{session_id}-{timestamp}-APP]-- Number of input_files: {len(input_files)}")
[...etc]
Приложение обслуживается с помощью Waitress с конфигурацией по умолчанию. Тест проводился в среде без каких-либо явных ограничений на размер файла и без изменения настроек тайм-аута по умолчанию.
Я не думаю, что это проблема с разрешениями, поскольку успешные тесты проводились на тот же экземпляр, что и неудачные тесты. Я не думаю, что это проблема с именем файла, потому что имена файлов очищаются.
Ведение журнала отладки было попыткой устранить проблему, но безуспешно. Я лично тестировал на Android и Ubuntu, каждый раз в локальной сети и удаленно, и каждый раз с разными браузерами, но не смог повторить.
Когда я тестирую напрямую, я получение отладочного сообщения с правильным количеством входных данных, например Number of input_files: 3. Однако в других тестах он регистрируется как Число входных_файлов: 0.
Один пользователь сообщил, что он, похоже, игнорирует первый файл, который он загружает. , но (иногда?) обрабатывает оставшиеся файлы.
Другие ответы SO, которые я нашел, предлагают настройки, которые, похоже, не влияют на проблему, и не объясняют, почему она может отличаться с различными пользовательскими настройками. В противном случае, поскольку я впервые использую JavaScript или Flask, я даже не знаю, с чего начать.
Подробнее здесь: https://stackoverflow.com/questions/793 ... m-in-flask
Мобильная версия