91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在HTML5中實現拖拽上傳文件

發布時間:2021-04-09 16:55:08 來源:億速云 閱讀:285 作者:Leah 欄目:web開發

怎么在HTML5中實現拖拽上傳文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

拖拽批量上傳文件夾

該組件基于 Vue.js 實現,UI 框架是 elementUI,完整的 demo 地址在https://github.com/Msxiaoma/upload-folder. 拖拽上傳文件夾(僅僅chrome支持)

一、組件描述

  1. 同時拖拽多個文件夾

  2. 刪除指定文件夾

  3. 顯示當前文件夾的上傳進度條

  4. 超過5M的文件夾分片上傳

二、遇到的問題

  1. 拖拽讀取每個文件夾下面的文件路徑

  2. 如何顯示當前上傳的文件夾的進度條

  3. 上傳文件時跨域攜帶 cookie

  4. 文件夾分片

三、解決過程

1. 拖拽讀取每個文件夾下面的文件路徑

在進行拖放操作時, DataTransfer 對象用來保存,通過拖放動作,拖動到瀏覽器的數據。它可以保存一項或多項數據、一種或者多種數據類型

// 拖拽文件夾
dropFolders (e) {
  e.stopPropagation()
  e.preventDefault()
  var items = e.dataTransfer.items
  for (var i = 0; i < items.length; i++) {
    var item = items[i].webkitGetAsEntry()
    if (item) {
      this.checkFolders(item)
    }
  }
}

// 判斷是否為文件夾
checkFolders (item) {
  if (item.isDirectory) {
    this.traverseFileTree(item)
  } else {
    this.$alert('只支持上傳文件夾', '提示', {
      confirmButtonText: '確定'
    })
  }
}

traverseFileTree (item, path, parentDir) {
  path = path || ''
  if (item.isFile) {
    item.file((file) => {
        let obj = {
          file: file,
          path: path + file.name,
          attr: item.attr
        }
        this.filesList.push(obj)
    })
  } else if (item.isDirectory) {
    var dirReader = item.createReader()
    dirReader.readEntries((entries) => {
      for (let i = 0; i < entries.length; i++) {
        entries[i].attr = item.attr
        this.traverseFileTree(entries[i], path + item.name + '/', temp)
      }
    }, function (e) {
      console.log(e)
    })
  }
}

2. 上傳文件夾的進度條

沒有分片的文件:根據文件夾中的文件總數,算出每個文件占文件夾的百分比,當一個文件上傳成功時,修改文件夾 process;

分片的文件:算出每個文件占文件的百分比后,算出每塊文件占文件的百分比,每塊文件上傳成功后,修改文件夾的 process.

3. 跨域攜帶 cookie

服務器設置響應頭

    Access-Control-Allow-Origin:必須指定明確的、與請求網頁一致的域名,不能為 *。   Access-Control-Allow-Credentials: true

設置請求頭:

    withCredentials:true

補充:

substring 和 substr 的區別

substr(start [, length ]) 返回一個從指定位置開始的指定長度的子字符串。

start:必選項。所需的子字符串的起始位置。字符串中的第一個字符的索引為 0。
length:可選項。在返回的子字符串中應包括的字符個數。

substring 返回位于 String 對象中指定位置的子字符串,返回一個包含從 start 到最后(不包含 end )的子字符串的字符串

start:指明子字符串的起始位置,該索引從 0 開始起算。
end:指明子字符串的結束位置,該索引從 0 開始起算。

關于怎么在HTML5中實現拖拽上傳文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金堂县| 喀喇沁旗| 湖南省| 靖安县| 密山市| 河西区| 长宁县| 磐安县| 黔南| 鸡泽县| 璧山县| 汤原县| 桑日县| 山西省| 宜兴市| 衡山县| 乌兰县| 西贡区| 三江| 容城县| 徐水县| 长治县| 游戏| 东辽县| 辽宁省| 冀州市| 民丰县| 汉川市| 永康市| 赞皇县| 白水县| 定南县| 东城区| 龙门县| 南宫市| 罗平县| 吴江市| 习水县| 冀州市| 沾化县| 固安县|