app.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. from flask import Flask, jsonify, request,send_from_directory
  2. from flask_cors import CORS
  3. import os
  4. import sqlite3
  5. import uuid
  6. app = Flask(__name__)
  7. CORS(app)
  8. # 图片上传目录
  9. UPLOAD_FOLDER = 'uploads'
  10. if not os.path.exists(UPLOAD_FOLDER):
  11. os.makedirs(UPLOAD_FOLDER)
  12. # 视频上传目录
  13. VIDEO_UPLOAD_FOLDER = 'video_uploads'
  14. if not os.path.exists(VIDEO_UPLOAD_FOLDER):
  15. os.makedirs(VIDEO_UPLOAD_FOLDER)
  16. app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
  17. app.config['VIDEO_UPLOAD_FOLDER'] = VIDEO_UPLOAD_FOLDER
  18. # 封装数据库连接函数
  19. def get_db_connection():
  20. return sqlite3.connect('software_intro.db')
  21. # 初始化数据库表
  22. def init_db():
  23. conn = get_db_connection()
  24. cursor = conn.cursor()
  25. cursor.execute('''
  26. CREATE TABLE IF NOT EXISTS software_intro (
  27. id INTEGER PRIMARY KEY AUTOINCREMENT,
  28. title TEXT NOT NULL,
  29. intro TEXT
  30. )
  31. ''')
  32. conn.commit()
  33. conn.close()
  34. # 调用初始化函数
  35. init_db()
  36. # 获取软件介绍信息的路由
  37. @app.route('/software-intro/<int:id>', methods=['GET'])
  38. def get_software_intro(id):
  39. try:
  40. conn = get_db_connection()
  41. cursor = conn.cursor()
  42. cursor.execute('SELECT title, intro FROM software_intro WHERE id = ?',(id,))
  43. result = cursor.fetchone()
  44. conn.close()
  45. if result:
  46. title, intro = result
  47. return jsonify({
  48. 'title': title,
  49. 'intro': intro
  50. })
  51. return jsonify({}), 404
  52. except sqlite3.Error as e:
  53. print(f"数据库错误: {e}")
  54. return jsonify({"error": f"数据库错误: {str(e)}"}), 500
  55. # 更新软件介绍信息的路由
  56. @app.route('/software-intro/<int:id>', methods=['PUT'])
  57. def update_software_intro(id):
  58. try:
  59. data = request.get_json()
  60. title = data.get('title')
  61. intro = data.get('intro')
  62. print(f"Received title: {title}, intro: {intro}")
  63. conn = get_db_connection()
  64. cursor = conn.cursor()
  65. cursor.execute('UPDATE software_intro SET title =?, intro =? WHERE id = ?', (title, intro,id))
  66. conn.commit()
  67. conn.close()
  68. return jsonify({'message': '软件介绍更新成功'})
  69. except sqlite3.Error as e:
  70. print(f"数据库错误: {e}")
  71. return jsonify({"error": f"数据库错误: {str(e)}"}), 500
  72. # 处理图片上传的路由
  73. @app.route('/upload-image', methods=['POST'])
  74. def upload_image():
  75. file = request.files['image']
  76. if file:
  77. filename = str(uuid.uuid4()) + '.' + file.filename.rsplit('.', 1)[1].lower()
  78. file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
  79. imageUrl = f'http://127.0.0.1:5000/uploads/{filename}'
  80. return jsonify({'imageUrl': imageUrl})
  81. return jsonify({'error': '未找到图片文件'}), 400
  82. # 处理视频上传的路由
  83. @app.route('/upload-video', methods=['POST'])
  84. def upload_video():
  85. file = request.files['video']
  86. if file:
  87. try:
  88. filename = str(uuid.uuid4()) + '.' + file.filename.rsplit('.', 1)[1].lower()
  89. file.save(os.path.join(app.config['VIDEO_UPLOAD_FOLDER'], filename))
  90. videoUrl = f'http://127.0.0.1:5000/video_uploads/{filename}'
  91. return jsonify({'videoUrl': videoUrl})
  92. except Exception as e:
  93. print(f"视频保存失败: {e}")
  94. return jsonify({'error': '视频保存失败'}), 500
  95. return jsonify({'error': '未找到视频文件'}), 400
  96. # 配置静态资源服务
  97. @app.route('/uploads/<path:filename>')
  98. def serve_image(filename):
  99. uploads_folder = os.path.join(app.root_path, 'uploads')
  100. return send_from_directory(uploads_folder, filename)
  101. # 配置视频静态资源服务
  102. @app.route('/video_uploads/<path:filename>')
  103. def serve_video(filename):
  104. video_uploads_folder = os.path.join(app.root_path, 'video_uploads')
  105. return send_from_directory(video_uploads_folder, filename)
  106. if __name__ == '__main__':
  107. app.run(debug=True)