vue-python前後端下載文件

兩種方式:

  1. pyhton後端下載文件,訪問url的形式將文件下載到本地,然後通過文件流傳到前端。或者直接將本地文件傳遞到前端。
  2. 僅前端通過url的形式直接下載,此時需要藉助a標籤。

下面試兩種方式的代碼例子:
方法一:

# Pyhton後端下載文件

def urlcallback(a, b, c):
    """
        call back function
        a,已下載的數據塊
        b,數據塊的大小
        c,遠程文件的大小
    """
    print "callback"
    prec = 100.0 * a * b / c
    if 100 < prec:
        prec = 100
    print "%.2f%%" % (prec,)


def main():
    """
        main
    """
    print "start..."
    urllib.urlretrieve(
        "/home/zhangze/Downloads/sogoupinyin_2.3.1.0112_amd64 (1).deb", "./tmp", urlcallback)
    print "end..."

隨後將文件內容全部讀出保存再content中,返回給前端。{“content”:content}
如果是服務器本地文件,則直接將文件讀出返回。

// 前端代碼,通過創建Blob實例,來講ajax請求獲取的上述content內容寫入到文件中。這裏的name是文件名。

    let url = window.URL.createObjectURL(new Blob([content])); //處理文檔流
          console.log(url);
          // let fileTye = url.match(/.+\/(.+)$/)[1];
          let link = document.createElement("a");
          link.style.display = "none";
          link.href = url;
          link.download = name;
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);

方法二:
直接跳過後臺,僅需要前端通過url直接下載遠程文件,這時候需要url是有效的。
download寫個封裝,直接調用就可,url爲有效url路徑,name是保存的文件名。
```javascript
    download(name, url) {
      var a = document.createElement("a");
      var e = document.createEvent("MouseEvents");
      e.initMouseEvent("click", false, false);
      a.href = url;
      a.download = name;
      a.dispatchEvent(e);
    },
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章