返回顶部

Django实现文件上传、文件列表查看、修改、限流和日志记录3

Django实现文件上传、文件列表查看、修改、限流和日志记录3

本次优化新增上传文件查看和修改功能

查看上传文件功能

添加查看视图

在Django中添加上传文件的展示功能,可以在视图函数中查询已上传的文件列表,并将其传递给模板进行展示

#添加查看视图
import paramiko
from django.shortcuts import render, redirect
from django.conf import settings
from django.http import HttpResponse

def view_file(request, file_name):
    # 连接远程服务器
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # ssh.connect('remote_server_ip', username='username', password='password')
    ssh.connect('10.0.0.127', username='root', password='ariswei')

    try:
        # 下载文件内容
        sftp = ssh.open_sftp()
        remote_file_path = '/data/' + file_name
        with sftp.open(remote_file_path, 'r') as remote_file:
            file_content = remote_file.read()
        sftp.close()
        ssh.close()

        # 渲染文件内容到模板
        context = {
            'file_name': file_name,
            'file_content': file_content.decode('utf-8')
        }
        return render(request, 'view_file.html', context)
    except Exception as e:
        return HttpResponse('文件查看失败:{}'.format(str(e)))

创建文件展示模板

创建一个名为view_file.html的模板文件,用于展示文件内容:

view_file.html

{% extends 'base.html' %}

{% block content %}
  <h2>查看文件:{{ file_name }}</h2>
  <pre>{{ file_content }}</pre>

  <h2>修改文件:{{ file_name }}</h2>
  <form method="post" action="{% url 'edit_file' file_name %}">
    {% csrf_token %}
    <textarea name="file_content" rows="10" cols="50">{{ file_content }}</textarea>
    <button type="submit">保存</button>
  </form>
{% endblock %}

添加查看视图

file_upload/urls.py文件中,添加URL映射来调用文件查看和修改的函数视图:

from django.urls import path
from file_upload_app import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('upload/', views.upload_file, name='upload'),
    path('view/', views.view_file, name='view_file'),
    path('edit/', views.edit_file, name='edit_file'),
]

 

添加文件修改功能

file_upload_app/views.py文件中,添加一个新的函数视图来处理文件修改的功能

添加修改文件视图

#添加修改视图
def edit_file(request, file_name):
    if request.method == 'POST':
        file_content = request.POST.get('file_content')

        # 连接远程服务器
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect('remote_server_ip', username='username', password='password')

        try:
            # 上传文件内容到远程服务器的/data目录
            sftp = ssh.open_sftp()
            remote_file_path = '/data/' + file_name
            with sftp.open(remote_file_path, 'w') as remote_file:
                remote_file.write(file_content.encode('utf-8'))
            sftp.close()
            ssh.close()

            return redirect('view_file', file_name=file_name)  # 重定向到文件查看页面
        except Exception as e:
            return HttpResponse('文件修改失败:{}'.format(str(e)))

    return HttpResponse('无法直接访问该页面')

通过访问http://localhost:8000/view/<file_name>/来查看已上传的文件内容,其中<file_name>是实际的文件名。页面上会显示文件内容,并提供一个表单用于修改文件内容。当你点击保存按钮时,会将修改后的文件内容保存到远程服务器的文件中,并重定向到文件查看页面。

验证查看和修改上传文件

 

 

 至此,将已上传文件的查看和修改功能已实现

 

posted @ 2023-08-13 16:26  九尾cat  阅读(178)  评论(0编辑  收藏  举报