Explorar el Código

新增 要素配置文件下载功能

zhaiyifei hace 2 años
padre
commit
9011e3c371
Se han modificado 2 ficheros con 21 adiciones y 1 borrados
  1. 3 1
      apps/QxzApp/urls.py
  2. 18 0
      apps/QxzApp/views.py

+ 3 - 1
apps/QxzApp/urls.py

@@ -1,4 +1,5 @@
 from django.conf.urls import url
+from django.urls import path
 
 from . import views
 
@@ -17,5 +18,6 @@ urlpatterns = [
 
     url(r'^device/add/$', views.QxzDeviceAddView.as_view()),
     url(r'^device/modify/$', views.QxzDeviceModifyView.as_view()),
-    url(r'^device/list/$', views.QxzDeviceListView.as_view())
+    url(r'^device/list/$', views.QxzDeviceListView.as_view()),
+    path(r'download/<str:device_id>/<str:file_name>', views.QxzConfigDownView.as_view()),
 ]

+ 18 - 0
apps/QxzApp/views.py

@@ -1,6 +1,8 @@
+import io
 import json
 import os
 
+from django.http import HttpResponse
 from django.shortcuts import render
 
 from rest_framework.response import Response
@@ -537,6 +539,22 @@ class QxzDeviceListView(GenericAPIView):
         return self.get_paginated_response(serializer.data)
 
 
+class QxzConfigDownView(APIView):
+    def get(self, request, device_id, file_name, *args, **kwargs):
+        file_path = f"/data/qxz/element/config/{device_id}/{file_name}"
+        if os.path.exists(file_path):
+            with open(file_path, 'rb') as fr:
+                content = fr.read()
+        else:
+            file_name = "null.c"
+            content = b''
+
+        response = HttpResponse(content, content_type="application/octet-stream")
+        response['Content-Disposition'] = f'attachment; filename={file_name}'
+        response['Access-Control-Allow-Origin'] = "*"
+        return response
+
+
 
 def init_data():
     data = {