From e94bee00601fd39d5a54940a173533ca5c4c146c Mon Sep 17 00:00:00 2001 From: ngfchl Date: Tue, 3 Jan 2023 12:38:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_pt/urls.py | 1 + auto_pt/views.py | 16 ++++++++++++- templates/auto_pt/showlog.html | 44 +++++++++++++++++++++++++++++++--- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/auto_pt/urls.py b/auto_pt/urls.py index 77ac960..ace8384 100644 --- a/auto_pt/urls.py +++ b/auto_pt/urls.py @@ -32,6 +32,7 @@ urlpatterns = [ path(r'get_log_list', views.get_log_list, name='get_log_list'), path(r'show_log_list', views.show_log_list, name='show_log_list'), path(r'get_log_content', views.get_log_content, name='get_log_content'), + path(r'download_log_file', views.download_log_file, name='download_log_file'), path(r'remove_log_api', views.remove_log_api, name='remove_log_api'), path(r'get_site_list', views.get_site_list, name='get_site_list'), path(r'edit_my_site', views.edit_my_site, name='edit_my_site'), diff --git a/auto_pt/views.py b/auto_pt/views.py index 46d0c3d..e7d34a2 100644 --- a/auto_pt/views.py +++ b/auto_pt/views.py @@ -11,7 +11,7 @@ import git import qbittorrentapi import transmission_rpc from django.contrib.auth.decorators import login_required -from django.http import JsonResponse +from django.http import JsonResponse, FileResponse from django.shortcuts import render from pt_site.UtilityTool import MessageTemplate, FileSizeConvert @@ -922,6 +922,20 @@ def remove_log_api(request): ).to_dict(), safe=False) +def download_log_file(request): + try: + name = request.GET.get('name') + file_path = os.path.join(BASE_DIR, f'db/{name}') + response = FileResponse(open(file_path, 'rb')) + response['content-type'] = "application/octet-stream;charset=utf-8" + response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path) + return response + except Exception as e: + return JsonResponse(data=CommonResponse.error( + msg=f'文件不存在?!{e}' + ).to_dict(), safe=False) + + def show_log_list(request): return render(request, 'auto_pt/showlog.html') diff --git a/templates/auto_pt/showlog.html b/templates/auto_pt/showlog.html index 840072c..b60629a 100644 --- a/templates/auto_pt/showlog.html +++ b/templates/auto_pt/showlog.html @@ -38,9 +38,17 @@ v-for="(name,index) in names" :index="index" :label="name" :value="name"> - 查看日志 - - 删除日志 + 下载 + + + 查看 + + + 删除 + @@ -138,6 +146,36 @@ }); }) }, + downloadLog() { + axios({ + method: "get", + headers: { + "content-type": "application/json", // 默认值 + Authorization: "Bearer " + sessionStorage.getItem("access_token"), + }, + url: "{% url 'download_log_file' %}" + '?name=' + this.log, + responseType: "blob", + }).then(res => { + console.log('日志文件', res) + {#let data = res.data#} + {#console.log(typeof res.data.data)#} + if (res.headers['content-type'] === 'application/octet-stream;charset=utf-8') { + return res.data + } else { + this.loading = false + this.$message({ + type: 'warning', + message: '删除日志文件失败!' + }); + } + }).catch(res => { + console.log('删除日志文件失败', res) + this.$message({ + type: 'warning', + message: '删除日志文件失败!' + res + }); + }) + }, removeLog() { if (this.log == 'logs.log') { this.$message({