婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ajax post下載flask文件流以及中文文件名問題

ajax post下載flask文件流以及中文文件名問題

熱門標(biāo)簽:福建微碼電話機器人 地圖標(biāo)注與公司業(yè)務(wù)關(guān)系 荊州智能電銷機器人 提高電話機器人接通率 大學(xué)校門地圖標(biāo)注 平?jīng)龈叩碌貓D標(biāo)注商戶要收費嗎 外呼系統(tǒng)api對接 廣西智能外呼系統(tǒng)多少錢 銷售電銷機器人詐騙

ajax post下載文件

后端返回文件流,flask中可使用 return send_file(文件路徑) 返回二進制文件流,在headers中傳送文件相關(guān)信息(如文件名)。

前端使用 URL.createObjectURL() 創(chuàng)建創(chuàng)建一個  DOMString URL對象,創(chuàng)建一個 a 節(jié)點,將URL對象賦給a節(jié)點的 href 屬性,最后調(diào)用 click() 方法點擊該 a 節(jié)點即可彈出瀏覽器下載框。

展示圖片

方法同上,將 a 改成 img , href 改成 src 即可,將URL對象寫入到目標(biāo)img標(biāo)簽的src即可。

另一種方法是后端返回圖片轉(zhuǎn)base64的字符串,src的值形如 "data:image/svg+xml;base64,${base字符串}" 。(這里的 svg+xml 表示圖片格式是svg,如果是png則改成png)

中文文件名亂碼

http headers中直接傳輸中文文件名,比較簡單的方法是后端進行url轉(zhuǎn)碼(這里使用python的 urllib.parse.quote ),前端使用 decodeURI() 解碼。

此外還可以設(shè)置headers的 Content-Disposition: attachment; filename*=UTF-8''xxxxx ,不過兼容性嘛……麻煩還不如直接urlcode算了,而且也懶得設(shè)置 Content-Disposition 了,前端從 Content-Disposition 中取 filename 也是夠麻煩的,會取到一長串字符串然后自己再想辦法取出來 filename= 后面的信息。

代碼如下:

flask

from urllib.parse import quote
@file.route('/download', methods=["POST"])
def download_file():
  filename='xx' #文件名
  filepath='xx/xx' #文件路徑
  res = make_response(send_file(filepath))
  #自定義的一個header,方便前端取到名字
  res.headers['filename'] = quote(filename.encode('utf-8'))
  return res
javascript——以async異步fetch為例:

async function download() {
  const res = await fetch(`http://xxx/file/download`, {
  method: "POST",
  body: JSON.stringify({}), //body里面是要發(fā)送的數(shù)據(jù)
  headers: { "Content-Type": "application/json" },
  responseType: 'blob'
 })

 if (res.ok) {
  const blData = await res.blob() //拿到blob數(shù)據(jù)
  const urlObjData = window.URL.createObjectURL(new Blob([blData])) //創(chuàng)建url對象
  
  //獲取文件 進行下轉(zhuǎn)碼
  const fileName = decodeURI(fileNameres.headers.get('filename'))
  
  //創(chuàng)建a標(biāo)簽 點擊a標(biāo)簽 達到下載目的
  const link = document.createElement('a')
  link.href = urlObjData
  link.download = fileName //下載文件的名字
  document.body.appendChild(link)
  link.click()
  
  document.body.removeChild(link)
  window.URL.revokeObjectURL(urlObjData);
  
  //展示圖片
  //xxx.src=urlObjData
 }
}

ps:flask下載文件---文件流

html:

a name="downloadbtn" class="btn btn-success pull-right" href="/downloadfile/?filename=/root/allfile/123.txt">下載/a>

py:

@app.route('/downloadfile/', methods=['GET', 'POST'])
def downloadfile():
  if request.method == 'GET':
    fullfilename = request.args.get('filename')
    # fullfilename = '/root/allfile/123.txt'
    fullfilenamelist = fullfilename.split('/')
    filename = fullfilenamelist[-1]
    filepath = fullfilename.replace('/%s'%filename, '')
    #普通下載
    # response = make_response(send_from_directory(filepath, filename, as_attachment=True))
    # response.headers["Content-Disposition"] = "attachment; filename={}".format(filepath.encode().decode('latin-1'))
    #return send_from_directory(filepath, filename, as_attachment=True)
    #流式讀取
    def send_file():
      store_path = fullfilename
      with open(store_path, 'rb') as targetfile:
        while 1:
          data = targetfile.read(20 * 1024 * 1024)  # 每次讀取20M
          if not data:
            break
          yield data

    response = Response(send_file(), content_type='application/octet-stream')
    response.headers["Content-disposition"] = 'attachment; filename=%s' % filename  # 如果不加上這行代碼,導(dǎo)致下圖的問題
    return response

沒有文件名,和文件格式,遇到這種情況,打開F12,查看response.headers 與正常的比較

總結(jié)

到此這篇關(guān)于ajax post下載flask文件流以及中文文件名的文章就介紹到這了,更多相關(guān)ajax post下載flask文件流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python web框架(django,flask)實現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例
  • Flask接口如何返回JSON格式數(shù)據(jù)自動解析
  • python+flask編寫一個簡單的登錄接口
  • flask開啟多線程的具體方法
  • 如何解決flask修改靜態(tài)資源后緩存文件不能及時更改問題
  • Flask緩存靜態(tài)文件的具體方法
  • Flask中sqlalchemy模塊的實例用法
  • 詳解Flask前后端分離項目案例
  • 基于python和flask實現(xiàn)http接口過程解析
  • Python Flask微信小程序登錄流程及登錄api實現(xiàn)代碼
  • Python flask框架實現(xiàn)查詢數(shù)據(jù)庫并顯示數(shù)據(jù)
  • Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉(zhuǎn)頁面
  • Python flask框架如何顯示圖像到web頁面
  • 解決flask接口返回的內(nèi)容中文亂碼的問題
  • Docker部署Flask應(yīng)用的實現(xiàn)步驟
  • Flask和pyecharts實現(xiàn)動態(tài)數(shù)據(jù)可視化
  • flask 框架操作MySQL數(shù)據(jù)庫簡單示例
  • 如何創(chuàng)建一個Flask項目并進行簡單配置

標(biāo)簽:婁底 邯鄲 樂山 衡陽 海南 內(nèi)江 德陽 黔東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ajax post下載flask文件流以及中文文件名問題》,本文關(guān)鍵詞  ajax,post,下載,flask,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ajax post下載flask文件流以及中文文件名問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于ajax post下載flask文件流以及中文文件名問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美剧情片在线观看| 国产精品色噜噜| 欧美日韩在线播放三区四区| 亚洲欧洲精品一区二区精品久久久| 欧美aⅴ一区二区三区视频| 久久综合九色综合97_久久久| 国产不卡视频一区| 久久99精品久久久久婷婷| 丝瓜av网站精品一区二区 | 久久精品亚洲精品国产欧美| 在线综合+亚洲+欧美中文字幕| 在线免费亚洲电影| 91蜜桃网址入口| hitomi一区二区三区精品| 精品写真视频在线观看| 琪琪一区二区三区| 精品一区二区三区影院在线午夜| 美腿丝袜亚洲色图| 久久99精品一区二区三区三区| 久色婷婷小香蕉久久| 精品综合免费视频观看| 国产剧情一区在线| www.欧美精品一二区| 色综合亚洲欧洲| 精品视频一区三区九区| 91精品欧美久久久久久动漫| 久久亚洲一区二区三区明星换脸| 久久先锋影音av| 亚洲欧洲精品一区二区精品久久久| 亚洲情趣在线观看| 日韩电影在线免费看| 极品少妇一区二区三区精品视频 | 一本久道久久综合中文字幕| av午夜一区麻豆| 欧美天堂亚洲电影院在线播放| 69久久99精品久久久久婷婷| 欧美一区三区二区| 日韩一区二区三区视频在线| 欧美国产成人精品| 亚洲欧美另类在线| 欧美aaa在线| 日韩黄色在线观看| 欧美在线观看18| 3atv一区二区三区| 精品三级在线看| 国产精品全国免费观看高清 | 国产成人免费在线视频| aa级大片欧美| 日韩欧美中文字幕一区| 国产精品福利影院| 日韩成人一区二区三区在线观看| 精品无人码麻豆乱码1区2区| 在线观看区一区二| 国产天堂亚洲国产碰碰| 亚洲成人免费视频| 国产精品原创巨作av| 欧美色图片你懂的| 久久综合久久综合久久综合| 亚洲精品日韩综合观看成人91| 男女性色大片免费观看一区二区 | 亚洲黄一区二区三区| 三级久久三级久久| 精品亚洲免费视频| 欧美又粗又大又爽| 国产亚洲一本大道中文在线| 亚洲bdsm女犯bdsm网站| 成人毛片在线观看| 精品理论电影在线观看| 亚洲色图欧美激情| 久久国内精品视频| 在线精品视频免费播放| 国产日韩精品一区| 日韩av中文在线观看| 日韩女优av电影| 亚洲综合小说图片| 99热99精品| 国产亚洲欧美激情| 精品一区二区三区免费观看| 7777女厕盗摄久久久| 国产精品美女久久久久久久网站| 亚洲aⅴ怡春院| 91日韩在线专区| 国产精品久久久久三级| 国产精品18久久久久| 精品少妇一区二区三区在线播放| 日韩福利电影在线观看| 欧美日韩国产综合一区二区| 亚洲国产精品久久不卡毛片| 色综合天天综合在线视频| 综合精品久久久| 91浏览器在线视频| 一区二区三区日韩| 欧美无乱码久久久免费午夜一区| 亚洲精品亚洲人成人网| 97久久精品人人做人人爽50路| 欧美国产一区在线| 成人在线一区二区三区| 国产精品欧美一区二区三区| 国产日本亚洲高清| 成人精品一区二区三区中文字幕 | 国产日韩精品一区二区浪潮av| 久久国产人妖系列| 日韩午夜小视频| 国精品**一区二区三区在线蜜桃| 日韩美一区二区三区| 日本视频一区二区| 精品国一区二区三区| 粉嫩蜜臀av国产精品网站| 亚洲人成影院在线观看| 欧美伊人久久久久久久久影院 | 激情丁香综合五月| 久久影视一区二区| 91麻豆高清视频| 日韩国产高清影视| 日韩精品在线看片z| 国产精品一线二线三线| 亚洲日本青草视频在线怡红院| 在线观看视频91| 蜜桃av一区二区在线观看| 久久综合九色综合97婷婷女人 | 午夜成人免费电影| 欧美一区二区三区男人的天堂| 美女视频免费一区| 亚洲天堂免费在线观看视频| 欧美精品少妇一区二区三区| 国产成人精品在线看| 欧美日韩一区高清| 国产一区二区三区在线观看免费视频| 国产清纯白嫩初高生在线观看91| 中文字幕第一区二区| 欧美精品一区在线观看| 国产精品丝袜黑色高跟| 日韩成人一级片| 99re这里只有精品首页| 成人久久视频在线观看| 欧美精品第1页| 亚洲欧美日本韩国| 成人做爰69片免费看网站| 在线成人免费视频| 日韩**一区毛片| 婷婷久久综合九色国产成人| 久久影音资源网| 欧美视频日韩视频在线观看| 国产乱淫av一区二区三区| 亚洲午夜免费福利视频| 国产日韩欧美a| 欧美一区二区视频在线观看 | 国产欧美日韩久久| 欧美一区在线视频| 色综合激情五月| 国产河南妇女毛片精品久久久| 亚洲一区二区三区小说| 久久久久久久av麻豆果冻| 777亚洲妇女| 欧美性三三影院| 色88888久久久久久影院按摩| 国产成人啪午夜精品网站男同| 三级成人在线视频| 亚洲成人精品在线观看| 亚洲精品日产精品乱码不卡| 国产精品美女久久久久久2018| 欧美一级免费观看| 欧美日韩国产一区| 欧美亚洲高清一区二区三区不卡| 91在线观看高清| a级高清视频欧美日韩| 国产成人免费视频一区| 国产在线一区二区综合免费视频| 日本不卡的三区四区五区| 天天色综合成人网| 日韩**一区毛片| 日产欧产美韩系列久久99| 日韩成人免费电影| 另类的小说在线视频另类成人小视频在线| 夜夜揉揉日日人人青青一国产精品| 亚洲婷婷国产精品电影人久久| 中文字幕在线不卡一区| 亚洲欧洲国产日韩| 玉米视频成人免费看| 一区二区久久久久| 亚洲大片精品永久免费| 午夜伊人狠狠久久| 日产欧产美韩系列久久99| 精品一区二区三区视频在线观看| 麻豆中文一区二区| 国产激情精品久久久第一区二区| 福利一区福利二区| 91网页版在线| 欧美精品电影在线播放| 精品99一区二区| 亚洲天堂免费看| 丝袜脚交一区二区| 国产福利一区在线| 久久综合色8888| 91国产福利在线| 97久久精品人人做人人爽50路| 久久国产精品露脸对白| 日韩不卡在线观看日韩不卡视频| 亚洲三级电影网站| 亚洲国产人成综合网站|