最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于django和dropzone.js實現上傳文件

 更新時間:2020年11月24日 11:15:21   作者:yoyo008  
這篇文章主要介紹了基于django和dropzone.js實現上傳文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

1、dropzone.js

http://www.dropzonejs.com/

dropzone.js是一個可預覽\可定制化的文件拖拽上傳,實現AJAX異步上傳文件的工具

2、dropzone.js前端界面上傳方式

官網下載 并且引入dropzone.js和dropzone.css(http://www.dropzonejs.com/)以及引用jquery.js,定義一個class="dropzone"即可完成,

代碼示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Flask upload with Dropzone example</title>
  <link rel="stylesheet" href="/static/css/dropzone.css" rel="external nofollow" type="text/css" />
  <script src="/static/js/jquery-3.3.1.js"></script>
  <script src="/static/js/dropzone.js"></script>
</head>
<body>

方法1:

<form id ="myAwesomeDropzone" action="{{ request.path }}" class="dropzone" method="POST" enctype="multipart/form-data"></form>
//這段代碼是展示dropzone.js的精髓,class一定要是dropzone,id可以自定義
<script type="text/javascript">
    //第二種配置,這種使用的是div做上傳區(qū)域時使用的配置
    Dropzone.autoDiscover = false;//不知道該行有什么用,歡迎高手下方評論解答
    $("#myAwesomeDropzone").dropzone({
    url: "{{ request.path }}",
    addRemoveLinks: true,
    method: 'post',
    filesizeBase: 1024
    });
</script>

方法2:

<div class="form-group">
  <label class="title">真人照(最多只能傳一張)</label>
  <div id="dropz" class="dropzone"></div>//這段代碼是展示dropzone.js的精髓,class一定要是dropzone,id可以自定義
</div>
<input type="hidden" name="file_id" ng-model="file_id" id="file_id"/>

<script type="text/javascript">
var appElement = document.querySelector('div .inmodal');
  var myDropzone = new Dropzone("#dropz", {
    url: "{{ request.path }}",//文件提交地址
    method:"post", //也可用put
    paramName:"file", //默認為file
    maxFiles:1,//一次性上傳的文件數量上限
    maxFilesize: 2, //文件大小,單位:MB
    acceptedFiles: ".jpg,.gif,.png,.jpeg", //上傳的類型
    addRemoveLinks:true,
    parallelUploads: 1,//一次上傳的文件數量
    //previewsContainer:"#preview",//上傳圖片的預覽窗口
    dictDefaultMessage:'拖動文件至此或者點擊上傳',
    dictMaxFilesExceeded: "您最多只能上傳1個文件!",
    dictResponseError: '文件上傳失敗!',
    dictInvalidFileType: "文件類型只能是*.jpg,*.gif,*.png,*.jpeg。",
    dictFallbackMessage:"瀏覽器不受支持",
    dictFileTooBig:"文件過大上傳文件最大支持.",
    dictRemoveLinks: "刪除",
    dictCancelUpload: "取消",
    //對一些方法的后續(xù)處理
    init:function(){
      this.on("addedfile", function(file) {
        //上傳文件時觸發(fā)的事件
        document.querySelector('div .dz-default').style.display = 'none';
      });
      this.on("success",function(file,data){
        alert(data.data)
        //上傳成功觸發(fā)的事件
        console.log('ok');
      });
      this.on("error",function (file,data) {
        //上傳失敗觸發(fā)的事件
        console.log('fail');
        var message = '';
        //lavarel框架有一個表單驗證,
        //對于ajax請求,JSON 響應會發(fā)送一個 422 HTTP 狀態(tài)碼,
        //對應file.accepted的值是false,在這里捕捉表單驗證的錯誤提示
        if (file.accepted){
          $.each(data,function (key,val) {
            message = message + val[0] + ';';
          })
          //控制器層面的錯誤提示,file.accepted = true的時候;
          alert(message);
        }
      });
      this.on("removedfile",function(file){
        //刪除文件時觸發(fā)的方法(向后臺發(fā)送刪除文件請求)
{#        $.post('/admin/del/'+ file_id,{'_method':'DELETE'},function (data) {#}
{#          console.log('刪除結果:'+data.message);#}
{#        })#}

        document.querySelector('div .dz-default').style.display = 'block';
      });
    }
  });
</script>
</body>
</html>

方法二中,很多參數是不一定需要定義的,參見方法一

3、后臺處理dropzone.js前端界面上傳的文件

A、django的settings.py 文件定義上傳文件夾:

#文件上傳文件夾定義
ENROLLED_DATA = '%s/statics/enrolled_data' %BASE_DIR

B、對應的view處理前端上傳過來的數據:

from django.views.decorators.csrf import csrf_exempt
from PerfectCRM.settings import *
import os
@csrf_exempt
def upload(request):
  if request.method =='POST': #post方式
    if request.is_ajax():  #如果是ajax請求
      if not os.path.exists(ENROLLED_DATA): #如果settings定義的 上傳文件夾不存在
        os.makedirs(ENROLLED_DATA,exist_ok=True) #新建文件夾
      for k,file_obj in request.FILES.items(): #獲取前端傳過來的文件數據
        with open('%s/%s'%(ENROLLED_DATA,file_obj.name),"wb") as f: #打開文件
          for chunk in file_obj.chunks():   
            f.write(chunk)  #chunk方式寫入文件
  return render(request, 'dropzone-back.html')

C、上傳成功:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • TensorFlow實現保存訓練模型為pd文件并恢復

    TensorFlow實現保存訓練模型為pd文件并恢復

    今天小編就為大家分享一篇TensorFlow實現保存訓練模型為pd文件并恢復,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中的random模塊及相關模塊詳解

    Python中的random模塊及相關模塊詳解

    這篇文章主要介紹了Python中的random模塊及相關模塊,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 簡單了解Python中的幾種函數

    簡單了解Python中的幾種函數

    這篇文章主要介紹了簡單了解Python中的幾種函數,具有一定參考價值。需要的朋友可以了解下。
    2017-11-11
  • python多線程下信號處理程序示例

    python多線程下信號處理程序示例

    這篇文章主要為大家詳細介紹了python多線程下信號處理程序示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python利用正則表達式實現計算器算法思路解析

    Python利用正則表達式實現計算器算法思路解析

    這篇文章主要介紹了Python利用正則表達式實現計算器算法思路解析,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-04-04
  • 使用Python計算隱含波動率

    使用Python計算隱含波動率

    隱含波動率(Implied?Volatility)在金融領域是一個核心概念,用于描述市場對于未來資產價格波動的預期程度,本文將詳細介紹如何使用Python計算隱含波動率,需要的可以了解下
    2024-11-11
  • 學習python中matplotlib繪圖設置坐標軸刻度、文本

    學習python中matplotlib繪圖設置坐標軸刻度、文本

    本篇文章給大家詳細介紹了python中matplotlib繪圖設置坐標軸刻度、文本等基本知識點,對此有興趣的朋友學習下吧。
    2018-02-02
  • Python中from…import *和import區(qū)別小結

    Python中from…import *和import區(qū)別小結

    本文介紹了Python中import和from...import兩種導入模塊的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • 利用matplotlib實現根據實時數據動態(tài)更新圖形

    利用matplotlib實現根據實時數據動態(tài)更新圖形

    今天小編就為大家分享一篇利用matplotlib實現根據實時數據動態(tài)更新圖形,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • scipy稀疏數組dok_array的具體使用

    scipy稀疏數組dok_array的具體使用

    本文主要介紹了scipy稀疏數組dok_array的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論

高平市| 大冶市| 府谷县| 道真| 南安市| 佳木斯市| 万全县| 云霄县| 梅州市| 珲春市| 綦江县| 嵩明县| 屏东县| 安徽省| 七台河市| 法库县| 清苑县| 太白县| 邵武市| 定南县| 增城市| 固安县| 武功县| 江津市| 涟水县| 长武县| 克山县| 县级市| 韶山市| 陕西省| 溧水县| 淅川县| 琼结县| 苗栗市| 筠连县| 都安| 三明市| 延安市| 新乐市| 卫辉市| 益阳市|