У меня есть веб-страница, на которой пользователь может загрузить файл PDF и отправить его с помощью AJAX в мое приложение Flask.Вот код ajax:
var formData = new FormData();
formData.append('attachment', document.getElementById("attachment").files[0]);
$.ajax({
type: 'POST',
url: 'process_award_storage',
contentType: false,
processData: false,
data: formData
})
Я не думаю, что это имеет какие-либо проблемы, потому что я могу распечатать содержимое и заголовок файла в коде Python.Тогда моя модель колбы определяется как таковая, используя LargeBinary для вложения в PDF:
class AwardStore(db.Model):
__tablename__ = 'awards_store'
id = db.Column(db.Integer, primary_key=True)
...
file = db.Column(db.LargeBinary, nullable=True) #I am sure this is the right file type for PDF saving
Наконец, вот как файл AJAX сохраняется в базе данных:
award = AwardStore(name=name, file=request.files['attachment'].read())
db.session.add(award)
db.session.commit()
Я могупосмотрите, используя MySQL Workbench, что он сохранен.Однако, когда я пытаюсь загрузить оттуда BLOB-файл на рабочий стол и открыть его, появляется сообщение «Не удалось загрузить документ PDF».То же самое происходит, когда я использую колбу send_file
.Кажется, я сделал все, как я видел в Интернете, но что-то не так.
Может быть, эти предупреждения связаны?:
C:\Users\msolonko\Desktop\NICKFI~1\CACHTM~1\APP_DE~1\virt\lib\site-packages\pymysql\cursors.py:170: Warning: (1300, "Invalid utf8 character string: 'C4E5F2'")
result = self._query(query)
C:\Users\msolonko\Desktop\NICKFI~1\CACHTM~1\APP_DE~1\virt\lib\site-packages\pymysql\cursors.py:170: Warning: (1265, "Data truncated for column 'file' at row 1")
result = self._query(query)
Я пытался их погуглить и ничего не нашел.Я ценю любую помощь.
РЕДАКТИРОВАТЬ:
Я заметил, что небольшие файлы, как правило, загружаются и отображаются правильно.Проблема связана с файлами размером> ~ 50 КБ.База данных, которую я использую AWS RDS. Можно ли где-то изменить настройку, чтобы включить большие размеры?