一、前言

 之前我们是用forms的方式去上传文件,后台去读取,然后去写入到后台去,具体博客:day18-Django获取1个或多个数据以及文件上传 ,我们今天使用的是,ajax方式去操作文件上传的动作,这边有三种方式,

  1. 原生ajax上传文件
  2. jquery的ajax的上传文件
  3. iframe方式(伪ajax方式)上传文件

 这个上传文件我们说完了,下面还有就是上传图片之后的预览,这个我们也要学会的,这个我们下面会一步一步的详细的介绍的,下面进入正题吧。

二、操作前提

2.1、路由url的设置

说明:我们首先设置一下路由

from django.urls import path
from app01.views import test

urlpatterns = [
    path('upload/',test.upload),   #上传文件页面
    path('upload_file/',test.upload_file),  #上传文件功能
]

2.2、upload函数

说明:通过upload函数显示上传页面

def upload(request):
    return render(request,'upload.html')

2.3、upload_file函数

说明:这边主要处理上传过来的文件,写到服务器上

def upload_file(request):
    username = request.POST.get('username')
    fafafa = request.FILES.get('fafafa')
    print(username,fafafa)  #输出 root settings.xml
    with open(fafafa.name,'wb') as f:
        for item in fafafa.chunks():  #把文件写入到服务器端
            f.write(item)
    ret = {'code':True,'data':request.POST.get('username')}
    import json
    return HttpResponse(json.dumps(ret))

2.4、upload.html的模板

说明:这边我只写html和css部分,js上传功能,我们下面详细的讲解,这边静态的东西如下:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .upload{
            display: inline-block;
            padding: 10px;
            background-color: brown;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
            z-index: 99;
        }
        .file{
            width: 100px;height: 50px;opacity: 0;
            position: absolute;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
            z-index: 100;
        }
    </style>
</head>
<body>
    <!--原生ajax和jquery ajax上传文件定义的html-->
    <div style="position: relative;width: 100px;height: 50px;">
        <!--因为这个改不了,所以这个上传的标签只能自定义组件,就是在外面嵌套div-->
        <input class="file" type="file" id="fafafa" name="afafaf">
        <a class="upload">上传</a>
    </div>
    <!--原生ajax的触发按钮-->
    <input type="button" value="提交XHR" onclick="xhrSubmit();"/>
    <!--jquery的发送方式触发按钮-->
    <input type="button" value="提交Jquery" onclick="jqSubmit();"/>
    <!--分隔符-->
    <hr/>
    <!--伪类ajax上传文件定义的html-->
    <form action="/upload_file/" method="post" enctype="multipart/form-data" target="ifm1">
        <iframe id="ifm1" name="ifm1"></iframe> <!--正常情况下,iframe在前端是不显示的,但是我们这边为了方便调试,所以暂时打开-->
        <input type="file" name="fafafa"/>
        <!--iframe方式上传文件-->
        <input type="submit" onclick="iframeSubmit();" value="Form提交"/>
    </form>
    <!--图片存放的地方-->
    <div id="preview"></div>
</body>
</html>
upload.html

相关文章:

  • 2022-02-07
  • 2021-12-06
  • 2021-07-11
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
猜你喜欢
  • 2021-11-20
  • 2022-02-07
  • 2021-09-17
  • 2021-08-24
  • 2022-12-23
  • 2021-06-11
相关资源
相似解决方案