django中實(shí)現(xiàn)圖片上傳

在django開(kāi)發(fā)中院峡,圖片上傳是我們經(jīng)常需要做的,比如用戶頭像的上傳拓售,文章封面的上傳折剃;

下面我們來(lái)看一下具體的實(shí)現(xiàn)方式:

Ajax 上傳圖片

Ajax上傳的好處在與我們上傳后可以根據(jù)服務(wù)器返回的路徑將上傳成功的圖片立即顯示在頁(yè)面上讓用戶可以看到;

具體上傳方式如下:

html

# 1.添加隱藏域input绪抛,并將input的type設(shè)置為‘file’類型,設(shè)置onchange事件并將獲取到的圖片傳到事件中
<input type="file" id="file" onchange="up_img(this.files[0])" style="display: none">
<section class="fixed">
    # 2.設(shè)置頭像展示組件资铡,并設(shè)置點(diǎn)擊事件,當(dāng)點(diǎn)擊時(shí)調(diào)用第一步中的input點(diǎn)擊事件
    <span><img src="/{{ user.icon }}" onclick="file.click()"></span>
    <p><a href="#">{{ user.name }}</a></p>
    <p><span class="glyphicon glyphicon-fire"></span><span>等級(jí)</span></p>
    <p><span class="glyphicon glyphicon-heart"></span>商品收藏</p>
</section>

# 3. 在input點(diǎn)擊事件中使用Ajax將圖片上傳到服務(wù)器
<script>
// 上傳頭像
function up_img(file){
  let xhr = new XMLHttpRequest();  # 創(chuàng)建XMLHttpRequest對(duì)象
  xhr.open('post', '/main/upfile', true);  # post異步上傳到/main/upfile路徑
  xhr.onload = function () {
      # 上傳成功后幢码,在此處接收服務(wù)器返回的數(shù)據(jù)并進(jìn)行處理
      let data = xhr.responseText;
      data = JSON.parse(data);
      console.log(data);
      $('.fixed img').attr('src', data['img'])  # 將返回的服務(wù)器圖片地址添加到img中顯示給用戶
  };
  let formdata = new FormData();  # 使用formdata存儲(chǔ)圖片文件
  formdata.append('file', file);
  xhr.send(formdata);  # 發(fā)送請(qǐng)求
}
</script>

views.py

@csrf_exempt  # 去除csrf驗(yàn)證
def upfile(request):
    sava_path = '/static/main/img/cart.png'  # 默認(rèn)圖片
    if request.method == 'POST':
        files = request.FILES.get('file')  # 獲取圖片
        # 圖片存放路徑
        filename = encryption(str(time.time())) + '.' + files.content_type.split('/')[1]
        sava_path = 'static/main/user_file/' + filename

        # 將圖片分段讀取并寫(xiě)入文件
        with open(sava_path, 'wb') as f:
            for file in files.chunks():
                f.write(file)
                f.flush()
        # 將圖片路徑更新到當(dāng)前用戶的表中
        user = User.objects.filter(token=request.COOKIES.get('token'))
        user.update(icon=sava_path)
    # 將上傳成功的圖片路徑返回給頁(yè)面
    return JsonResponse({'img': sava_path})

效果展示:

多布局.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末害驹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛤育,更是在濱河造成了極大的恐慌,老刑警劉巖葫松,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓦糕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腋么,警方通過(guò)查閱死者的電腦和手機(jī)咕娄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)珊擂,“玉大人圣勒,你說(shuō)我怎么就攤上這事费变。” “怎么了圣贸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵挚歧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吁峻,道長(zhǎng)滑负,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任用含,我火速辦了婚禮矮慕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啄骇。我一直安慰自己痴鳄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布缸夹。 她就那樣靜靜地躺著痪寻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪明未。 梳的紋絲不亂的頭發(fā)上槽华,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音趟妥,去河邊找鬼猫态。 笑死,一個(gè)胖子當(dāng)著我的面吹牛披摄,可吹牛的內(nèi)容都是我干的亲雪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疚膊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼义辕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起寓盗,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灌砖,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后傀蚌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體基显,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年善炫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撩幽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窜醉,靈堂內(nèi)的尸體忽然破棺而出宪萄,到底是詐尸還是另有隱情,我是刑警寧澤榨惰,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布拜英,位于F島的核電站,受9級(jí)特大地震影響读串,放射性物質(zhì)發(fā)生泄漏聊记。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一恢暖、第九天 我趴在偏房一處隱蔽的房頂上張望排监。 院中可真熱鬧,春花似錦杰捂、人聲如沸舆床。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挨队。三九已至,卻和暖如春蒿往,著一層夾襖步出監(jiān)牢的瞬間盛垦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瓤漏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腾夯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓蔬充,卻偏偏與公主長(zhǎng)得像蝶俱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饥漫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 蘭亭臨帖 提筆欲書(shū)情真切 落日余暉 誰(shuí)惹驟雨芭蕉葉 衣袖輕卷 寫(xiě)下不悔如初的思念 又在提捺間 不借胭脂的容顏 瓦上...
    從此凋朱顏閱讀 448評(píng)論 0 2
  • 誰(shuí)在呼喚我 彷徨的仲夏 落日點(diǎn)燃了晚霞 思念燒成畫(huà) 星光依偎著燈塔 螢火蟲(chóng)不回家 風(fēng)載著火花 撕開(kāi)了塵沙 如果還會(huì)...
    53aad588f285閱讀 406評(píng)論 0 4
  • 《經(jīng)濟(jì)學(xué)的思維方式》榨呆,用了6天時(shí)間仔細(xì)讀了一遍,類似于教科書(shū)庸队,但遠(yuǎn)勝于教科書(shū)积蜻。將供給需求、機(jī)會(huì)成本彻消、邊際效應(yīng)浅侨、比較...
    FrankCoach閱讀 465評(píng)論 0 0
  • Using English at Work [TOC] ==Ⅰ. Words== critiquepervasiv...
    遷喵閱讀 352評(píng)論 0 0
  • 在5.x正常工作,在2017.2.2上會(huì)出現(xiàn)報(bào)錯(cuò)如下: InvalidOperationException: Ca...
    北風(fēng)瘦馬閱讀 2,246評(píng)論 3 0