上传二进制文件(Dicom文件)到flask服务器,同时使用javascript接收JSON响应的步骤如下:
以下是一个示例代码,演示了如何实现上述步骤:
前端HTML代码:
<form id="uploadForm">
<input type="file" id="fileInput" name="dicomFile">
<button type="submit">上传</button>
</form>
<div id="progressBar"></div>
前端JavaScript代码:
const form = document.getElementById('uploadForm');
const fileInput = document.getElementById('fileInput');
const progressBar = document.getElementById('progressBar');
form.addEventListener('submit', (e) => {
e.preventDefault();
const file = fileInput.files[0];
const formData = new FormData();
formData.append('dicomFile', file);
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.upload.addEventListener('progress', (event) => {
if (event.lengthComputable) {
const percent = (event.loaded / event.total) * 100;
progressBar.style.width = percent + '%';
}
});
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
// 处理JSON响应数据
} else {
// 处理错误情况
}
}
};
xhr.send(formData);
});
后端Flask代码:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
dicom_file = request.files['dicomFile']
# 处理上传的Dicom文件
# 构建JSON响应数据
response_data = {
'status': 'success',
'message': '文件上传成功',
'data': {
'file_name': dicom_file.filename,
'file_size': dicom_file.content_length,
# 其他处理结果
}
}
return jsonify(response_data)
if __name__ == '__main__':
app.run()
在上述示例中,前端页面包含一个文件上传表单,用户选择Dicom文件后,通过JavaScript代码将文件发送到Flask服务器的/upload
路由。服务器接收到文件后,进行处理并将处理结果封装为JSON响应数据返回给前端。前端通过监听服务器的响应,解析JSON数据并进行相应的处理。
请注意,示例中的代码仅为演示目的,并未包含完整的错误处理和安全性措施。在实际应用中,应根据具体需求进行适当的改进和增强。
领取专属 10元无门槛券
手把手带您无忧上云