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

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

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

熱門標簽:福建微碼電話機器人 地圖標注與公司業務關系 荊州智能電銷機器人 提高電話機器人接通率 大學校門地圖標注 平涼高德地圖標注商戶要收費嗎 外呼系統api對接 廣西智能外呼系統多少錢 銷售電銷機器人詐騙

ajax post下載文件

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

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

展示圖片

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

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

中文文件名亂碼

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

此外還可以設置headers的 Content-Disposition: attachment; filename*=UTF-8''xxxxx ,不過兼容性嘛……麻煩還不如直接urlcode算了,而且也懶得設置 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里面是要發送的數據
  headers: { "Content-Type": "application/json" },
  responseType: 'blob'
 })

 if (res.ok) {
  const blData = await res.blob() //拿到blob數據
  const urlObjData = window.URL.createObjectURL(new Blob([blData])) //創建url對象
  
  //獲取文件 進行下轉碼
  const fileName = decodeURI(fileNameres.headers.get('filename'))
  
  //創建a標簽 點擊a標簽 達到下載目的
  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  # 如果不加上這行代碼,導致下圖的問題
    return response

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

總結

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

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

標簽:婁底 邯鄲 樂山 衡陽 海南 內江 德陽 黔東

巨人網絡通訊聲明:本文標題《ajax post下載flask文件流以及中文文件名問題》,本文關鍵詞  ajax,post,下載,flask,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ajax post下載flask文件流以及中文文件名問題》相關的同類信息!
  • 本頁收集關于ajax post下載flask文件流以及中文文件名問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产精品综合小说图片区| 色综合久久九月婷婷色综合| 日本亚洲天堂网| 欧美在线影院一区二区| 中文字幕日韩一区| 99久久精品免费看国产 | 亚洲成人高清在线| 99在线热播精品免费| 中文字幕一区视频| 日韩经典一区二区| 日韩免费电影网站| 亚洲区小说区图片区qvod| 午夜精品视频一区| 成人黄色小视频| 亚洲一区二区三区四区在线观看 | 欧美日韩黄色一区二区| 欧美精品一区视频| 日本美女一区二区三区| 欧美亚洲一区二区三区四区| 亚洲三级在线看| 成人综合在线观看| 精品国产免费一区二区三区香蕉| 国产一区二区福利| 亚洲一区在线观看免费 | 99久久久国产精品| 国产日韩综合av| 99国产精品视频免费观看| 国产精品对白交换视频 | 色婷婷久久综合| 亚洲综合偷拍欧美一区色| 久久网这里都是精品| 色悠久久久久综合欧美99| 狠狠色丁香九九婷婷综合五月| 中文字幕日本乱码精品影院| 欧美一区二区三区视频在线观看 | 国产精品亚洲а∨天堂免在线| 午夜精品久久久久久久久| 精品国产乱码久久久久久蜜臀 | 欧美人与z0zoxxxx视频| 国产欧美综合在线| 成人看片黄a免费看在线| 日日夜夜精品视频免费| 亚洲一区二区三区四区五区中文 | 婷婷国产v国产偷v亚洲高清| 成人午夜在线视频| 成人免费在线播放视频| av在线不卡观看免费观看| 亚洲天堂精品视频| 欧美日韩免费电影| 狠狠网亚洲精品| 国产精品久久久久久福利一牛影视 | 成人免费看片app下载| 国产经典欧美精品| 成人在线一区二区三区| 97久久超碰国产精品| 欧美日韩亚洲高清一区二区| 欧洲国产伦久久久久久久| 欧美日韩大陆在线| 欧美一区二区女人| 欧美一区二区三区在线看| 精品日韩av一区二区| 久久综合久久综合久久| 国产精品乱码一区二区三区软件| 中文字幕中文字幕在线一区| 亚洲国产欧美日韩另类综合| 国产麻豆一精品一av一免费| 激情伊人五月天久久综合| av在线不卡网| 欧美视频中文字幕| 国产精品进线69影院| 午夜国产精品影院在线观看| 福利电影一区二区三区| 日本电影亚洲天堂一区| 国产精品高潮久久久久无| 中文一区在线播放| 一区二区三区四区不卡视频| 久久蜜桃av一区精品变态类天堂| 欧美成人精品1314www| 久久精品一区二区三区不卡| 床上的激情91.| 麻豆国产欧美一区二区三区| 国产综合一区二区| 欧美一区二区性放荡片| 91激情在线视频| 免费视频最近日韩| 亚洲一区二区三区视频在线 | 成人黄色小视频| 日韩经典中文字幕一区| 亚洲人成在线播放网站岛国| 久久亚区不卡日本| 午夜欧美电影在线观看| 99精品黄色片免费大全| 国产精品青草久久| 国产·精品毛片| 亚洲精品国产高清久久伦理二区| 久草热8精品视频在线观看| 6080yy午夜一二三区久久| 亚洲一二三区视频在线观看| 91成人网在线| 精品一区二区三区在线观看国产| 美女看a上一区| 91蜜桃网址入口| 欧美日韩精品一二三区| 一本大道久久a久久综合婷婷| 国产一区二区看久久| 精品午夜一区二区三区在线观看| 五月综合激情日本mⅴ| 亚洲美女视频一区| 国产精品国产三级国产普通话三级| 精品理论电影在线观看| 精品免费视频.| 日韩女优制服丝袜电影| 日韩一级视频免费观看在线| 7777精品伊人久久久大香线蕉| 欧美日韩中字一区| 欧美伊人精品成人久久综合97| 欧美中文字幕一区二区三区| 日本二三区不卡| 国产精品久久久久久久久免费相片| 久久久亚洲高清| 亚洲精品在线三区| 国产网红主播福利一区二区| 国产精品人成在线观看免费| 136国产福利精品导航| 亚洲成人黄色影院| 麻豆精品一二三| 国产伦精品一区二区三区免费迷| 国产成人精品网址| 91日韩在线专区| 欧美日韩国产乱码电影| 欧美一级欧美三级| 国产精品区一区二区三| 亚洲品质自拍视频| 亚洲午夜电影在线观看| 看片网站欧美日韩| 成人天堂资源www在线| 91免费小视频| 欧美一级夜夜爽| 久久蜜桃av一区二区天堂| 国产精品久久影院| 亚洲成av人片www| 国产精品影视在线观看| 99精品国产91久久久久久| 欧美自拍偷拍午夜视频| 久久综合久久鬼色中文字| 亚洲婷婷综合色高清在线| 亚洲国产一区二区三区青草影视| 久久er99精品| 91啪亚洲精品| 日韩免费一区二区三区在线播放| 中文字幕欧美区| 五月综合激情婷婷六月色窝| 国产aⅴ综合色| 欧美日韩国产片| 中文字幕一区二区5566日韩| 免费观看久久久4p| 91行情网站电视在线观看高清版| 91精品国产91热久久久做人人| 国产精品久久久久久久蜜臀| 国产一区二区三区免费播放| 91污片在线观看| 91精品久久久久久久99蜜桃| 久久久国际精品| 一区二区三区国产精华| 欧美日韩精品高清| 国产免费久久精品| 精品一区二区三区免费毛片爱| 国产精品888| 亚洲精品在线电影| 日韩电影在线观看网站| 99国产精品国产精品毛片| 欧美日韩国产一二三| 亚洲综合偷拍欧美一区色| 国产乱码精品一区二区三区忘忧草 | 国产精品视频yy9299一区| 日本vs亚洲vs韩国一区三区二区| 日韩一区二区三区视频| 欧美极品少妇xxxxⅹ高跟鞋 | 成人av网址在线观看| 成人一区二区三区视频在线观看| 亚洲特黄一级片| 欧美三级视频在线| 99久久精品免费观看| 国产成人午夜片在线观看高清观看| 91精品在线一区二区| 亚洲精品一二三四区| 92国产精品观看| 中文字幕在线不卡| 国产老肥熟一区二区三区| 精品国产免费人成电影在线观看四季| 亚洲国产高清不卡| 成人午夜视频在线观看| 国产精品麻豆久久久| 欧美日韩一区二区三区在线看| 中文字幕一区二| 亚洲欧美在线高清| 欧美性猛交xxxx乱大交退制版| 久久蜜桃av一区二区天堂| 视频在线观看一区二区三区| 欧美妇女性影城|