当前位置:   article > 正文

前后端交互的简单实现(python+html5+axios)_html怎么和python后端联系

html怎么和python后端联系

1、前端html+axios

         一个简单的HTML页面,通过axios将选定的音频文件上传至后端的Python服务器,后端Python服务器使用flask接收音频文件并返回上传成功的消息。请确保在本地运行flask服务器,并根据实际情况更改端口号和上传地址。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>音频上传</title>
  6. </head>
  7. <body>
  8. <form>
  9. <!-- 这里规定上传的类型 application/msword是word文本-->
  10. <input type="file" id="audio-file" accept="audio/*">
  11. <button type="button" onclick="uploadAudio()">上传</button>
  12. </form>
  13. <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  14. <script>
  15. function uploadAudio() {
  16. const fileInput = document.querySelector('#audio-file');
  17. const file = fileInput.files[0];
  18. if (!file) {
  19. console.error('请选择一个音频文件');
  20. return;
  21. }
  22. const formData = new FormData();
  23. formData.append('audio', file);
  24. axios.post('http://127.0.0.1:5000/uplode', formData, {
  25. headers: {
  26. 'Content-Type': 'multipart/form-data'
  27. }
  28. }).then(response => {
  29. console.log(response.data);
  30. }).catch(error => {
  31. console.error(error);
  32. });
  33. }
  34. </script>
  35. </body>
  36. </html>

2、后端python

         这段代码是一个 Flask 应用,当接收到一个 POST 请求时,从请求中获取音频文件,保存到服务器上指定的路径,并返回一个上传成功的消息。其中 response.headers['Access-Control-Allow-Origin'] = '*' 这一行设置了允许跨域访问。如果没有这一行,则前端在上传文件时会遇到跨域问题,因为默认情况下,Flask 只允许在本域名下进行请求,如果要跨域请求,则需要进行设置。

  1. from flask import Flask, request, jsonify
  2. import os
  3. app = Flask(__name__)
  4. # 指定可以访问的目录
  5. app.config['UPLOAD_FOLDER'] = os.path.abspath(os.path.dirname(__file__))
  6. @app.route('/uplode', methods=['POST'])
  7. def upload_audio():
  8. file = request.files.get('audio')
  9. if not file:
  10. return jsonify({'message': '请选择一个音频文件'}), 400
  11. # 保存音频文件到服务器上的某个路径
  12. file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
  13. response = jsonify({'message': '上传成功'})
  14. response.headers['Access-Control-Allow-Origin'] = '*'
  15. return response, 200
  16. if __name__ == '__main__':
  17. app.run(port=5000)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/411020
推荐阅读
相关标签
  

闽ICP备14008679号