濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > HTML5 拖拽批量上傳文件的示例代碼

HTML5 拖拽批量上傳文件的示例代碼

熱門標(biāo)簽:漳州人工外呼系統(tǒng)排名 濟(jì)南辦理400電話 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)怎么安裝 農(nóng)村住宅地圖標(biāo)注 跟電銷機(jī)器人做同事 鄭州電銷外呼系統(tǒng)違法嗎 中紳電銷智能機(jī)器人 ai電銷機(jī)器人連接網(wǎng)關(guān) 威海營(yíng)銷外呼系統(tǒng)招商

拖拽批量上傳文件夾

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

一、組件描述

  1. 同時(shí)拖拽多個(gè)文件夾
  2. 刪除指定文件夾
  3. 顯示當(dāng)前文件夾的上傳進(jìn)度條
  4. 超過(guò)5M的文件夾分片上傳

效果如下:

 

二、遇到的問(wèn)題

  1. 拖拽讀取每個(gè)文件夾下面的文件路徑
  2. 如何顯示當(dāng)前上傳的文件夾的進(jìn)度條
  3. 上傳文件時(shí)跨域攜帶 cookie
  4. 文件夾分片

三、解決過(guò)程

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

在進(jìn)行拖放操作時(shí), DataTransfer 對(duì)象用來(lái)保存,通過(guò)拖放動(dòng)作,拖動(dòng)到瀏覽器的數(shù)據(jù)。它可以保存一項(xiàng)或多項(xiàng)數(shù)據(jù)、一種或者多種數(shù)據(jù)類型

// 拖拽文件夾
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. 上傳文件夾的進(jìn)度條

沒(méi)有分片的文件:根據(jù)文件夾中的文件總數(shù),算出每個(gè)文件占文件夾的百分比,當(dāng)一個(gè)文件上傳成功時(shí),修改文件夾 process;

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

3. 跨域攜帶 cookie

當(dāng)服務(wù)器設(shè)置響應(yīng)頭

    Access-Control-Allow-Origin:必須指定明確的、與請(qǐng)求網(wǎng)頁(yè)一致的域名,不能為 *。   Access-Control-Allow-Credentials: true

設(shè)置請(qǐng)求頭:

    withCredentials:true

補(bǔ)充:

substring 和 substr 的區(qū)別

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

start:必選項(xiàng)。所需的子字符串的起始位置。字符串中的第一個(gè)字符的索引為 0。
length:可選項(xiàng)。在返回的子字符串中應(yīng)包括的字符個(gè)數(shù)。

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:甘南 文山 咸陽(yáng) 蘇州 惠州 紅河 營(yíng)口 萍鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 拖拽批量上傳文件的示例代碼》,本文關(guān)鍵詞  HTML5,拖拽,批量,上傳,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 拖拽批量上傳文件的示例代碼》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于HTML5 拖拽批量上傳文件的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    惠安县| 东乌珠穆沁旗| 秦皇岛市| 得荣县| 久治县| 古浪县| 双牌县| 健康| 南投县| 平山县| 察雅县| 洪洞县| 奉节县| 滦南县| 平乐县| 平山县| 额尔古纳市| 白水县| 富源县| 新闻| 六枝特区| 萨迦县| 平南县| 始兴县| 福建省| 漾濞| 个旧市| 巴里| 岐山县| 林芝县| 平昌县| 都昌县| 柯坪县| 栾川县| 西青区| 商城县| 城步| 龙海市| 枞阳县| 大丰市| 宁国市|