zoukankan      html  css  js  c++  java
  • 文件上传

    form表单实现文件上传

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/bs/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col-md-offset-3 col-md-6">
                <form action="" style="margin-top:100px" class="form-group" method="post" enctype="multipart/form-data">
                    {% csrf_token  %}
                    <div class="form-group">
                        <label>用户名:</label>
                        <input type="text" name="user" class="form-control">
                    </div>
                    <div>
                        <label>上传文件</label>
                        <input type="file" name="file_obj">
                    </div>
                    <input type="submit" class="btn btn-info" value="提交">
                </form>
            </div>
        </div>
    </div>
    
    </body>
    <script src="/static/jquery/jquery-3.3.1.js"></script>
    </html>
    

    django部分

    def upload(request):
        if request.POST:
            file_obj = request.FILES.get("file_obj")
            print(file_obj)
            path = os.path.join(settings.MEDIA_ROOT, file_obj.name)
            
            with open(path, 'wb')as f:
                for line in file_obj:
                    f.write(line)
        return render(request, "upload.html")
    

    ajax实现文件上传

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>注册</title>
        <link rel="stylesheet" href="/static/bs/css/bootstrap.css">
    
        <style type="text/css">
            .error {
                color: #ff2b23;
            }
        </style>
    </head>
    
    <body>
    <div class="container" style="margin-top: 100px">
        <div class="row">
            <div class="col-md-offset-3 col-md-6">
                <form id="form">
                    {% csrf_token %}
                    <div class="form-group">
                        <label>用户名:</label>
                        <input type="text" class="form-control" id="user" name="user">
                        <span class="error pull-right"></span>
                    </div>
                    <div class="form-group">
                        <label>密码:</label>
                        <input type="password" class="form-control" id="pwd" name="pwd">
                        <span class="error pull-right"></span>
                    </div>
                    <div class="form-group">
                        <label>确认密码:</label>
                        <input type="password" class="form-control" id="re_pwd" name="re_pwd">
                        <span class="error pull-right"></span>
                    </div>
                    <div class="form-group">
                        <label for="avatar">头像
                            <img id="avatar_img" src="/media/avatar/default.jpeg" height="60" width="60">
                        </label>
                        <input type="file" id="avatar" name="avatar" style="display: none;">
                    </div>
                    <input type="button" class="sub btn btn-info" value="注册">
                </form>
            </div>
        </div>
    </div>
    </body>
    <script src="/static/jquery/jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $("#avatar").change(function () {
            var file_obj = $(this)[0].files[0];
            var reader = new FileReader();
            reader.readAsDataURL(file_obj);
            console.log(reader.result);
            reader.onload = function () {
                $("#avatar_img").attr("src", reader.result);
            }
    
        });
        $(".sub").click(function () {
            var pwd = $("#pwd").val();
            var re_pwd = $("#re_pwd").val();
    
            if (pwd != re_pwd) {
                $("#re_pwd+ span").html("两次密码不一致");
                setTimeout(function () {
                    $("#re_pwd").next().html('');
                }, 1000);
                return
            }
    
    
            var formdata = new FormData();
            var requestData = $("#form").serializeArray();
            $.each(requestData, function (index, data) {
                formdata.append(data.name, data.value)
            });
            console.log(formdata);
            $.ajax({
                url: "",
                type: "post",
                contentType: false,
                processData: false,
                data: formdata,
                success: function (data) {
                    console.log(data);
                    if (data.user) {
                        alert("注册成功!");
                        location.href = "/login/";
                    } else {
                        $("span.error").html('');
                        $.each(data.msg, function (field, error_list) {
                            console.log(field);
                            console.log(error_list);
                            $("#" + field).next().html(error_list);
                        })
                    }
                }
    
            })
    
    
        })
    </script>
    </html>
    
    django部分

    views.py

    def reg(request):
        print(request.POST)
        if request.is_ajax():
            form = UserForm(request.POST)
            response = {"user": None, "msg": None}
            if form.is_valid():
                user = form.cleaned_data.get('user')
                pwd = form.cleaned_data.get('pwd')
                avartar_obj = request.FILES.get('avatar')
                extra = {}
                if avartar_obj:
                    extra["avatar"] = avartar_obj
                models.UserInfo.objects.create_user(username=user, password=pwd, **extra)
                response["user"] = user
                
            else:
                print(form.errors)
                response["msg"] = form.errors
            return JsonResponse(response)
        return render(request, 'reg.html')
        
    def login(request):
        if request.is_ajax():
            response = {"user": None, "msg": None}
            print(request.POST)
            username = request.POST.get("user")
            pwd = request.POST.get("pwd")
            user = auth.authenticate(username=username, password=pwd)
            
            if user:
                auth.login(request, user)
                response["user"] = user.username
            else:
                response["msg"] = "用户名或者密码不正确"
            return JsonResponse(response)
        
        return render(request, "login.html")
    
    

    models

    class UserInfo(AbstractUser):
        avatar = models.FileField("avatar/", default='avatar/default.jpeg')
    
  • 相关阅读:
    在GridView中绑定HyperLink
    C语言学习之我见strcat()字符拼接函数(有缺陷)
    C语言学习之我见strcmp()字符串比较函数
    C语言学习之我见memchr()内存查找字符函数
    C语言学习之我见strncmp()字符串比较函数(控制范围)
    C语言学习之我见strncat()可调整的字符串拼接函数
    C语言学习之我见strlen()字符串长度函数
    设计高并发的电子商店
    实战业务逻辑层
    实战架构设计
  • 原文地址:https://www.cnblogs.com/Jason-lin/p/9375187.html
Copyright © 2011-2022 走看看