Ajax上传文件(异步刷新)

Ajax上传文件(异步刷新)

1、setting

#静态资源探测设置
STATIC_URL = '/static/'
​
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'resources'),
]

2、templates

<!upload.html>
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax上传页面</title>
    <script type="text/javascript" src="{% static 'js/jquery-3.1.1.js' %}"></script>
    <script type="text/javascript">
        function upload_data(){
            var formdata = new FormData();  // 使用FormData对象封装Ajax上传的数据
            formdata.append("uploadname",$("#username").val()); // 添加用户名数据
            formdata.append("uploadfile",$("[name='myfile']")[0].files[0]);  // 添加上传数据
            // 将csrftoken的值也添加到formdata对象中
            formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());
            $.ajax({                  //ajax局部刷新
                url:"{% url 'myapp:upload' %}",
                data:formdata,
                type:"post",
                contentType:false,  //内容解析  不解析
                processData:false,   //处理数据,设置flase
                success:function(data){
                    alert(data);
                }
            });
        }
    </script>
</head>
<body>
    {% csrf_token %}
    用户名:<input type="text"  id="username"/> <br/>
    <input type="file" name="myfile"/>  <br/>
    <input type="button" value="点击上传" onclick="upload_data()"/>
</body>
</html>

3、views

from django.http import HttpResponse
from django.shortcuts import render
import os
​
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
​
def go_upload(request):
    return render(request,'upload.html')
​
​
def upload(request):
    username = request.POST["uploadname"]  # 接收上传文本
    upload_obj = request.FILES.get("uploadfile")  # 接收上传文件
    dest_path = os.path.join(BASE_DIR,'upload','images',upload_obj.name) # 拼凑上传文件地址
    with open(dest_path,'wb') as f:
        for chunk in upload_obj.chunks():
            f.write(chunk)
​
    return HttpResponse(username+",您的文件已经成功上传!")

4、urls

猜你喜欢

转载自blog.csdn.net/weixin_42569562/article/details/84169095