Я пытаюсь загрузить файлы в приложение flask, размещенное на движке приложения. Кажется, я не могу получить файл, который можно увидеть в параметрах POST, в приложение flask.
Вот javascript, который выполняет дропзону и загрузку.
<script type="application/javascript">
function sendFile_(file) {
const uri = "/upload_document";
const xhr = new XMLHttpRequest();
const fd = new FormData();
xhr.open("POST", uri, true);
xhr.setRequestHeader("Content-Type", 'multipart/form-data');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText); // handle response.
};
};
fd.append('file', file);
// Initiate a multipart/form-data upload
xhr.send(fd);
};
document.addEventListener('DOMContentLoaded', function() {
const dropzone = document.getElementById("dropzone");
dropzone_{{ approval_country['country'] }}.ondragover = dropzone.ondragenter = function(event) {
event.stopPropagation();
event.preventDefault();
};
dropzone.ondrop = function(event) {
event.stopPropagation();
event.preventDefault();
const filesArray = event.dataTransfer.files;
for (let i=0; i<filesArray.length; i++) {
sendFile(filesArray[i]);
};
};
});
</script>
Я вижу файл в полезной нагрузке запроса в консоли. мое приложение выдает ошибку not found.
Вот код python, который находится в конечной точке '/ upload_document'
@app.route('/upload_document', methods=['POST']) # TODO ADD SECURITY To ROUTE
def upload_document():
if request.method == 'POST':
file = request.files.get('file')
bucket = storage_client.bucket('myapp.appspot.com')
blob = bucket.blob(file.filename)
blob.upload_from_file(file)
return "OK"
Я пробовал так много вариантов, работал ли он, когда это была простая форма, выполняющая загрузку, но не с зоной сброса на странице.
Любая помощь будет высоко ценится.