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

Django中的文件的上傳的幾種方式

 更新時(shí)間:2018年07月23日 08:33:09   作者:天王蓋地虎寶塔鎮(zhèn)河妖  
這篇文章主要介紹了Django中的文件的上傳的幾種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

PS:這段時(shí)間有點(diǎn)不在狀態(tài),剛剛找回那個(gè)狀態(tài),那么我們繼續(xù)曾經(jīng)的夢(mèng)想

今天我們來(lái)補(bǔ)充一下文件的上傳的幾種方式:

首先我們先補(bǔ)充的一個(gè)知識(shí)點(diǎn):

一、請(qǐng)求頭ContentType:

ContentType 指的是請(qǐng)求體的編碼類型,常見(jiàn)的類型共有三種:

1、application/x-www-form-urlencoded

這應(yīng)該是最常見(jiàn)的POST提交數(shù)據(jù)的方式。瀏覽器的原生 <form> 表單,如果不設(shè)置 enctype 屬性,那么最終就會(huì)以 application/x-www-form-urlencoded 方式提交數(shù)據(jù)。請(qǐng)求類似于下面這樣(無(wú)關(guān)的請(qǐng)求頭在本文中都省略掉了):

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

user=duoduo&age=22

2、multipart/form-data

這又是一個(gè)常見(jiàn)的POST數(shù)據(jù)提交的方式。我們使用表單上傳文件時(shí),必須讓<form>表單的enctype 等于multipart/form-data

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="user"

duoduo
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

這個(gè)例子稍微復(fù)雜點(diǎn)。首先生成了一個(gè) boundary 用于分割不同的字段,為了避免與正文內(nèi)容重復(fù),boundary 很長(zhǎng)很復(fù)雜。然后 Content-Type 里指明了數(shù)據(jù)是以 multipart/form-data 來(lái)編碼,本次請(qǐng)求的 boundary 是什么內(nèi)容。消息主體里按照字段個(gè)數(shù)又分為多個(gè)結(jié)構(gòu)類似的部分,每部分都是以 --boundary 開(kāi)始,緊接著是內(nèi)容描述信息,然后是回車,最后是字段具體內(nèi)容(文本或二進(jìn)制)。如果傳輸?shù)氖俏募?,還要包含文件名和文件類型信息。消息主體最后以  --boundary-- 標(biāo)示結(jié)束。關(guān)于 multipart/form-data 的詳細(xì)定義,請(qǐng)前往  rfc1867 查看。

這種方式一般用來(lái)上傳文件,各大服務(wù)端語(yǔ)言對(duì)它也有著良好的支持。

上面提到的這兩種 POST 數(shù)據(jù)的方式,都是瀏覽器原生支持的,而且現(xiàn)階段標(biāo)準(zhǔn)中原生 <form> 表單也 只支持這兩種方式 (通過(guò) <form> 元素的  enctype 屬性指定,默認(rèn)為  application/x-www-form-urlencoded 。其實(shí)  enctype 還支持  text/plain ,不過(guò)用得非常少)。

隨著越來(lái)越多的 Web 站點(diǎn),尤其是 WebApp,全部使用 Ajax 進(jìn)行數(shù)據(jù)交互之后,我們完全可以定義新的數(shù)據(jù)提交方式,給開(kāi)發(fā)帶來(lái)更多便利。

3 、application/json

application/json 這個(gè) Content-Type 作為響應(yīng)頭大家肯定不陌生。實(shí)際上,現(xiàn)在越來(lái)越多的人把它作為請(qǐng)求頭,用來(lái)告訴服務(wù)端消息主體是序列化后的 JSON 字符串。由于 JSON 規(guī)范的流行,除了低版本 IE 之外的各大瀏覽器都原生支持 JSON.stringify,服務(wù)端語(yǔ)言也都有處理 JSON 的函數(shù),使用 JSON 不會(huì)遇上什么麻煩。

JSON 格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù),這一點(diǎn)也很有用。記得我?guī)啄昵白鲆粋€(gè)項(xiàng)目時(shí),需要提交的數(shù)據(jù)層次非常深,我就是把數(shù)據(jù) JSON 序列化之后來(lái)提交的。不過(guò)當(dāng)時(shí)我是把 JSON 字符串作為 val,仍然放在鍵值對(duì)里,以 x-www-form-urlencoded 方式提交。

二、基于form表單的文件上傳

模塊部分

<form action="" method="post" enctype="multipart/form-data">
   用戶名 <input type="text" name="user">
   頭像 <input type="file" name="avatar">
  <input type="submit">
</form>

視圖部分

def index(request):
  print(request.body)  # 原始的請(qǐng)求體數(shù)據(jù)
  print(request.GET)  # GET請(qǐng)求數(shù)據(jù)
  print(request.POST)  # POST請(qǐng)求數(shù)據(jù)
  print(request.FILES) # 上傳的文件數(shù)據(jù)


  return render(request,"index.html")

三、基于Ajax的文件上傳

模塊

<form>
   用戶名 <input type="text" id="user">
   頭像 <input type="file" id="avatar">
   <input type="button" id="ajax-submit" value="ajax-submit">
</form>

<script>

  $("#ajax-submit").click(function(){
    var formdata=new FormData();
    formdata.append("user",$("#user").val());
    formdata.append("avatar_img",$("#avatar")[0].files[0]);
    $.ajax({

      url:"",
      type:"post",
      data:formdata,
      processData: false ,  // 不處理數(shù)據(jù)
      contentType: false,  // 不設(shè)置內(nèi)容類型

      success:function(data){
        console.log(data)
      }
    })

  })

</script>

視圖

def index(request):

  if request.is_ajax():

    print(request.body)  # 原始的請(qǐng)求體數(shù)據(jù)
    print(request.GET)  # GET請(qǐng)求數(shù)據(jù)
    print(request.POST)  # POST請(qǐng)求數(shù)據(jù)
    print(request.FILES) # 上傳的文件數(shù)據(jù)

    return HttpResponse("ok")


  return render(request,"index.html")

檢查瀏覽器的請(qǐng)求頭:

Content - Type : multipart / form - data; boundary = - - - - WebKitFormBoundaryaWl9k5ZMiTAzx3FT

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python的pip安裝以及使用教程

    python的pip安裝以及使用教程

    這篇文章主要為大家詳細(xì)介紹了python的pip安裝以及使用教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python繪制直線的方法

    python繪制直線的方法

    這篇文章主要為大家詳細(xì)介紹了python繪制直線的方法,繪制直線通用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python辦公自動(dòng)化之JSOM數(shù)據(jù)處理與SQL Server數(shù)據(jù)庫(kù)操作

    Python辦公自動(dòng)化之JSOM數(shù)據(jù)處理與SQL Server數(shù)據(jù)庫(kù)操作

    這篇文章主要為大家詳細(xì)介紹了Python辦公自動(dòng)化中JSOM數(shù)據(jù)處理與SQL Server數(shù)據(jù)庫(kù)操作的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考下
    2024-01-01
  • 詳解Python類的定義與實(shí)例

    詳解Python類的定義與實(shí)例

    這篇文章給大家介紹Python類的定義與實(shí)例,下面是一個(gè)使用?NewSpaceGraph?類的示例,展示了如何實(shí)例化該類并調(diào)用其方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 如何用python復(fù)制粘貼excel指定單元格(可保留格式)

    如何用python復(fù)制粘貼excel指定單元格(可保留格式)

    這篇文章主要給大家介紹了關(guān)于如何用python復(fù)制粘貼excel指定單元格(可保留格式)的相關(guān)資料,利用python操作excel非常方便,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Python中文文本處理利器jieba分詞庫(kù)使用

    Python中文文本處理利器jieba分詞庫(kù)使用

    這篇文章主要給大家介紹了關(guān)于Python中文文本處理利器jieba分詞庫(kù)使用的相關(guān)資料,jieba是python中一個(gè)重要的第三方中文分詞函數(shù)庫(kù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • django2+uwsgi+nginx上線部署到服務(wù)器Ubuntu16.04

    django2+uwsgi+nginx上線部署到服務(wù)器Ubuntu16.04

    這篇文章主要介紹了django2+uwsgi+nginx上線部署到服務(wù)器Ubuntu16.04,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 淺析python中SQLAlchemy排序的一個(gè)坑

    淺析python中SQLAlchemy排序的一個(gè)坑

    這篇文章主要介紹了關(guān)于python中SQLAlchemy排序的一個(gè)坑,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,感興趣的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • python抓取百度首頁(yè)的方法

    python抓取百度首頁(yè)的方法

    這篇文章主要介紹了python抓取百度首頁(yè)的方法,涉及Python使用urllib模塊實(shí)現(xiàn)頁(yè)面抓取的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python通過(guò)psd-tools解析PSD文件

    Python通過(guò)psd-tools解析PSD文件

    這篇文章主要介紹了Python通過(guò)psd-tools解析PSD文件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06

最新評(píng)論

富蕴县| 镇远县| 寿宁县| 钟山县| 曲水县| 鄂托克旗| 元阳县| 包头市| 望奎县| 霍州市| 平泉县| 凌云县| 宜兴市| 察哈| 高安市| 蓬莱市| 鞍山市| 合阳县| 甘洛县| 淅川县| 望都县| 安仁县| 崇礼县| 崇阳县| 汽车| 海阳市| 定西市| 顺昌县| 甘德县| 将乐县| 马关县| 鄱阳县| 娱乐| 梅河口市| 郓城县| 黄石市| 祁阳县| 漯河市| 新化县| 易门县| 博乐市|