Проблема с загрузкой файла через форму Javascript в FlaskPython

Программы на Python
Ответить
Anonymous
 Проблема с загрузкой файла через форму Javascript в Flask

Сообщение Anonymous »

Я пишу небольшую программу Flask, в которой пользователь загружает PDF-файлы через форму html/javascript во внешнем интерфейсе, которые вместе обрабатываются во внутреннем интерфейсе.Тестирование на Ubuntu и Android (Firefox) у меня проблем нет. Я попросил двух других пользователей протестировать (один на iPhone, другой на Windows), но загрузка у обоих не удалась.
Выдержки из интерфейса

Код: Выделить всё

        



[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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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