django 使用ajax上傳文件並返回圖片路徑和狀態碼


 

前端源碼:

<!DOCTYPE html>
<html>
<head>
    <title>編輯商品分類</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>

<div class="container-fluid">
    <div class="row">
        <div class="box">
            <div class="box-header">

                {#路徑導航#}
                <ol class="breadcrumb">
                    <li><a href="#">產品管理</a></li>
                    <li><a href="#">分類列表</a></li>
                    <li class="active">會員編輯</li>
                </ol>
                {#路徑導航#}

            </div>
            <div class="box-body">
                <div class="col-md-12">
                    <form method="POST" enctype="multipart/form-data">
                        {% csrf_token %}
                        <div class="form-group">
                            <label for="username">商品分類名稱</label>
                            <input type="text" class="form-control" name="name" id="username" value="{{ type.name }}">
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword1">原圖片</label>

                            <a href=""
                               style="width:155px;height:115px;display:block;text-align:center;border:1px solid red;position:relative;background:url({{ type.img.url }}) no-repeat;">
                                <input type="file" style="position: absolute;width:155px;height:115px;top:0px;left:0px;filter:alpha(opacity=0);
cursor:pointer;overflow: hidden;opacity: 1; " name="upload_media" id="upload_media" multiple="multiple" >
                            </a>

                        </div>


                        <button type="submit" class="btn btn-default">編輯</button>
                    </form>
                </div>
            </div>

        </div>
    </div>
</div>


</body>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
    $(function () {
        $('.img-thumbnail').click(function () {
            console.log('點擊了')
            $('.upload_media').change(function () {
                console.log('deeee')
            })
        });
        $('#upload_media').change(function () {
            var $formData=new FormData();
            var img_file = $('#upload_media')[0].files[0];
            $formData.append("img_file",img_file);
            $.ajax({
                url: "{% url 'admincms:upload_file' %}",
                type: "POST",
                data: $formData,
                contentType: false,
                processData: false,
                headers: {"X-CSRFToken": $('[name="csrfmiddlewaretoken"]').val()},
                success: function (data) {
                    //$(".error_msg").text(data)
                    console.log(data)
                },
                error:function(data){
                    console.log(data)
                }
            })
        });
    });
</script>
</html>

  

視圖源碼:

#上傳圖片
def upload_file(request):
    fafafa = request.FILES.get('img_file')
    print(fafafa)
    print(fafafa.name)
    import os
    img_path = os.path.join('static/media/',fafafa.name)    #存儲的路徑
    with open(img_path,'wb') as f:      #圖片上傳
        for item in fafafa.chunks():
            f.write(item)

    ret = {'code': True , 'data': img_path}  #'data': img_path 數據為圖片的路徑,
    import json
    return HttpResponse(json.dumps(ret))    #將數據的路徑發送到前端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM