1. Django系列之Django與ajax上傳文件


html代碼如下:

<div class="form-group">
                <label for="exampleInputFile">附件上傳</label>
                 <input  type="file" name="file" id="file_upload">
                 <button  type="button" class="btn btn-default" onclick="FileUpload()">開始上傳附件</button>
            </div>

jqeury代碼如下:

        //   上傳附件到方法
        function FileUpload() {
            var form_data = new FormData();
            var file_info = $('#file_upload')[0].files[0];
            form_data.append('file',file_info);
            //if(file_info==undefined)暫且不許要判斷是否有附件
                //alert('你沒有選擇任何文件');
                //return false
            //}

            // 提交ajax的請求
            $.ajax({
                url:"{% url 'post_apply_data' %}",
                type:'POST',
                data: form_data,
                processData: false,  // tell jquery not to process the data
                contentType: false, // tell jquery not to set contentType
                success: function(callback) {

                    console.log(order_id)
                }
            }); // end ajax
        }

django-view代碼如下:

def handle_upload(request):
    file_obj = request.FILES.get('file')
    if file_obj:   # 處理附件上傳到方法
        request_set = {}
        print('file--obj', file_obj)
        #user_home_dir = "upload/%s" % (request.user.userprofile.id)
        accessory_dir = settings.accessory_dir
        if not os.path.isdir(accessory_dir):
            os.mkdir(accessory_dir)
        upload_file = "%s/%s" % (accessory_dir, file_obj.name)
        recv_size = 0
        with open(upload_file, 'wb') as new_file:
            for chunk in file_obj.chunks():
                new_file.write(chunk)
        order_id = time.strftime("%Y%m%d%H%M%S",time.localtime())
        cache.set(order_id,upload_file)
        return HttpResponse(order_id)

至此,我們可以通過ajax正常上傳文件了。


免責聲明!

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



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