Jadual Kandungan
Penerangan ringkas tentang proses
Dapatkan kod pengenalan unik MD5 bagi fail
文件切片
获取文件名 name
分片文件大小 chunkSize
文件切片 chunkList 列表
切片总数 chunks
切片大小  size
合并
Rumah hujung hadapan web View.js Analisis ringkas tentang cara vue melaksanakan muat naik menghiris fail

Analisis ringkas tentang cara vue melaksanakan muat naik menghiris fail

Mar 24, 2023 pm 07:40 PM
vue.js Muat naik fail kepingan fail

Analisis ringkas tentang cara vue melaksanakan muat naik menghiris fail

Dalam proses projek pembangunan sebenar, kadangkala perlu memuat naik fail yang agak besar Kemudian, muat naik akan menjadi agak perlahan, jadi latar belakang mungkin memerlukan bahagian hadapan untuk diproses muat naik Slice adalah sangat mudah untuk memotong aliran fail, contohnya, 1 G kepada beberapa aliran fail kecil, dan kemudian meminta antara muka untuk menghantar aliran fail kecil ini.

Penerangan ringkas tentang proses

Untuk melaksanakan import penghirisan fail, mula-mula kami menggunakan elementUI atau teg muat naik asli untuk mendapatkan aliran fail fail, dan kemudian kami perlu lakukan Satu perkara ialah untuk mengetahui sama ada fail ini telah dimuat naik sebelum ini kembalikan kami tiga status :

  • Tiada fail, anda perlu memuat naik kesemuanya.

  • Fail ini wujud dan bahagian hadapan tidak perlu memuat naiknya semula.

  • Sebahagian daripada fail ini telah dimuat naik dan anda perlu terus memuat naik bahagian yang belum dimuat naik.

Hanya terdapat tiga keadaan ini Satu parameter penting untuk melaksanakan langkah ini ialah pengecam unik bagi fail ini. Jadi kita perlu mendapatkan kod pengenalan unik MD5 bagi fail ini terlebih dahulu. [Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]

Apabila kami mengetahui bahawa fail perlu dimuat naik atau perlu dimuat naik sebahagiannya, kami perlu melakukan operasi menghiris . Ini adalah sangat mudah. ​​Contohnya, aliran bait perduaan fail adalah 1G secara keseluruhan, dan kemudian ia biasanya dipotong menjadi satu keping 5M, jadi jika ia adalah fail 1G, ia perlu dipotong kepada 205 keping sudah tentu, bahagian terakhir tidak semestinya 5M, dan kemudian kita pergi Antara muka untuk memuat naik fail dalam bahagian, memulakan permintaan untuk mengimport fail ke bahagian.

Pertama sekali, mari jelaskan bahawa selepas kami menyerahkan 205 aliran data berpecah-belah ini, latar belakang perlu digabungkan, iaitu, 205 aliran fail yang dihantar oleh serpihan kami disintesis menjadi satu fail besar dan disimpan . Dengan cara ini, fail yang digabungkan di latar belakang adalah fail yang akhirnya akan kami serahkan untuk diimport Memandangkan bahagian belakang perlu digabungkan, kami memuat naiknya sekeping demi sekeping adalah, betul? Oleh itu, apabila kami menyerahkan permintaan sharding, biasanya kami perlu lulus parameter ini:

  • chunk: Nombor shard semasa, biasanya bermula dari 0.
  • Saiz ketul: Saiz serpihan, biasanya 5M, iaitu 5242880 bait.
  • ketul: Berapakah jumlah keseluruhannya.
  • fail: Strim fail serpihan semasa.
  • md5: Kod pengenalan unik MD5 bagi keseluruhan fail, tidak berpecah-belah.
  • nama: Nama fail semasa.
  • saiz: Saiz serpihan semasa (jika blok terakhir tidak semestinya 5M).

Dengan cara ini bahagian belakang tahu cara menggabungkan fail akhir. Sudah tentu, medan khusus perlu ditakrifkan oleh bahagian belakang, dan kemudian kita boleh menyambung dengan sewajarnya mengikut idea ini.

OK, selepas semua 205 data serpihan kami diserahkan, kami perlu melalui antara muka lain, iaitu untuk memberitahu bahagian belakang Okay, serpihan bahagian hadapan saya telah dihantar, dan anda boleh menggabungkan fail.

Kemudian cantuman bahagian belakang selesai dan fail berjaya diimport!

Dapatkan kod pengenalan unik MD5 bagi fail

Ramai orang mengatakan bahawa MD5 bukan penyulitan Sebenarnya, idea ini tidak betul di sini fail. Ya, ia hanya akan menghasilkan kod unik Jadi, oh, anggap saja ia sebagai penyulitan, tetapi jangan fikir bahawa menghantar kod MD5 sama seperti menghantar fail yang disulitkan ke bahagian belakang rentetan, bukan Fail yang disulitkan, kedua, perkara ini tidak boleh menyahsulit. Kami hanya menjana pengecam unik untuk fail di sini, supaya bahagian belakang boleh menentukan sama ada fail itu telah wujud pada pelayan sebelum ini Jika terdapat pengecam unik, ini bermakna ia telah dimuat naik sebelum ini memuat naik sekali lagi, selepas semua, jika fail itu diubah suai, kod pengenalan MD5 akan berubah.

Cara mendapatkan pengekodan MD5 bagi fail adalah sangat mudah Anda perlu menggunakan pustaka spark-md5 dalam vue.

Satu arahan untuk memasang

npm install --save spark-md5
Salin selepas log masuk

Kemudian kita boleh menulis kaedah untuk merangkumnya.

Buat failMd5Sum.js:

import SparkMD5 from 'spark-md5'

export default {
  // md5值计算
  fileMd5Sum(file) {
    return new Promise(resolve => {
      let fileReader = new FileReader()
      let Spark = new SparkMD5.ArrayBuffer()
      fileReader.readAsArrayBuffer(file)
      fileReader.onload = function (e) {
        Spark.append(e.target.result)
        let md5 = Spark.end()
        resolve(md5)
      }
    });
  }
}
Salin selepas log masuk

Kemudian anda boleh menggunakannya apabila anda perlu menggunakannya Sudah tentu, apa yang dikembalikan di sini adalah Janji, yang boleh diperolehi terus .then.

atau gunakan async、 await .

let md5Str = await this.fileMd5Sum.fileMd5Sum(file.raw)
Salin selepas log masuk

文件切片

获取了文件MD5标识码,后台说需要提交,我们就需要把文件切片,从头提交或者是提交部分操作了,如果不需要的话直接走合并接口就可以了,走合并接口其实是告诉后台合并,我们要做的就是把其他除了文件相关的其他参数传递给后台罢了。

文件切片就是类似于字符串截取,这里是截取字节。获取需要的参数我们自己些就可以了。假设我们使用 elementUI 文件上传组件获取到了文件 file

获取文件名 name

let fileName = file.name  // 获取文件名
Salin selepas log masuk

分片文件大小 chunkSize

let chunkSize = 5 * 1024 * 1024   // 一般是 5M,具体多少看后端想要多少
Salin selepas log masuk

文件切片 chunkList 列表

            let chunkList = []  // 创建一个数组用来存储每一片文件流数据
            if (file.size < chunkSize) {  // 如果文件大小小于5M就只有一片,不用切都
              chunkList.push(file.raw.slice(0))  // 文件流从第一个字节直接截取到最后就可以了
            } else {  // 如果文件大小大于5M 就需要切片了
              var start = 0, end = 0  // 创建两个变量 开始位置 结束位置
              while (true) {  // 循环
                end += chunkSize  // 结束为止 = 结束位置 + 每片大小
                let blob = file.raw.slice(start, end)  // 文件流从开始位置截取到结束位置
                start += chunkSize  // 截取完,开始位置后移
                if (!blob.size) {  // 如果截取不到了就退出
                  break;
                }
                chunkList.push(blob)  // 把截取的每一片数据保存到数组
              }
            }
Salin selepas log masuk

切片总数 chunks

我们上一步已经获取到每片文件流的数组了,所以说呢,直接获取就可以了。

let chunks = chunkList.length
Salin selepas log masuk

切片大小 size

我们是按照 5 M 切割的,所以说每片大小应该是 5 * 1024 * 1024 但是呢,不对,因为最后一片不一定就是正好的 5 M,所以说我们可直接 .size 获取一下大小。比如:

chunkList[0].size  // 获取第1片大小
Salin selepas log masuk

参数都找齐了,然后就走切片提交接口开始提交数据就可以了。

合并

当我们把分片数据全部提交成功,后台返回说切片文件保存成功之后,我们就可以走最后一个接口,提交就可以了。

好了,就这样!完成!!!

(学习视频分享:vuejs入门教程编程基础视频

Atas ialah kandungan terperinci Analisis ringkas tentang cara vue melaksanakan muat naik menghiris fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Nov 08, 2023 pm 06:02 PM

Untuk melaksanakan muat naik dan muat turun fail dalam dokumen Workerman, contoh kod khusus diperlukan. Pengenalan: Workerman ialah rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi yang ringkas, cekap dan mudah digunakan. Dalam pembangunan sebenar, muat naik dan muat turun fail adalah keperluan fungsi biasa Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan muat naik dan muat turun fail, dan memberikan contoh kod khusus. 1. Muat naik fail: Muat naik fail merujuk kepada operasi memindahkan fail pada komputer tempatan ke pelayan. Yang berikut digunakan

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Nov 02, 2023 pm 04:36 PM

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Laravel ialah rangka kerja Web PHP popular yang menyediakan pelbagai fungsi dan alatan untuk menjadikan pembangunan aplikasi Web lebih mudah dan cekap. Salah satu fungsi yang biasa digunakan ialah muat naik dan muat turun fail. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail, serta menyediakan contoh kod khusus. Muat naik fail Muat naik fail merujuk kepada memuat naik fail tempatan ke pelayan untuk penyimpanan. Dalam Laravel kita boleh menggunakan muat naik fail

Bagaimana untuk menyelesaikan pengecualian muat naik fail Java (FileUploadException) Bagaimana untuk menyelesaikan pengecualian muat naik fail Java (FileUploadException) Aug 18, 2023 pm 12:11 PM

Cara menyelesaikan pengecualian muat naik fail Java (FileUploadException Satu masalah yang sering dihadapi dalam pembangunan web ialah FileUploadException (pengecualian muat naik fail). Ia mungkin berlaku disebabkan oleh pelbagai sebab seperti saiz fail melebihi had, format fail tidak sepadan atau konfigurasi pelayan yang salah. Artikel ini menerangkan beberapa cara untuk menyelesaikan masalah ini dan menyediakan contoh kod yang sepadan. Hadkan saiz fail yang dimuat naik Dalam kebanyakan senario, hadkan saiz fail

Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Jun 03, 2024 pm 04:54 PM

Bagaimana untuk melaksanakan muat naik fail menggunakan gRPC? Buat definisi perkhidmatan sokongan, termasuk permintaan dan mesej respons. Pada klien, fail yang hendak dimuat naik dibuka dan dibahagikan kepada beberapa bahagian, kemudian distrim ke pelayan melalui aliran gRPC. Di bahagian pelayan, ketulan fail diterima dan disimpan ke dalam fail. Pelayan menghantar respons selepas muat naik fail selesai untuk menunjukkan sama ada muat naik berjaya.

Bagaimana untuk melaksanakan bar kemajuan muat naik fail FTP menggunakan PHP Bagaimana untuk melaksanakan bar kemajuan muat naik fail FTP menggunakan PHP Jul 30, 2023 pm 06:51 PM

Cara menggunakan PHP untuk melaksanakan bar kemajuan muat naik fail FTP 1. Pengenalan latar belakang Dalam pembangunan laman web, muat naik fail adalah fungsi biasa. Untuk muat naik fail besar, untuk meningkatkan pengalaman pengguna, kami selalunya perlu memaparkan bar kemajuan muat naik kepada pengguna untuk memberitahu pengguna proses muat naik fail. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi bar kemajuan muat naik fail FTP. 2. Idea asas untuk melaksanakan bar kemajuan muat naik fail FTP Bar kemajuan muat naik fail FTP biasanya dikira dengan mengira saiz fail yang dimuat naik dan saiz fail yang dimuat naik.

Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Aug 13, 2023 pm 06:45 PM

Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Pengenalan: Muat naik fail ialah keperluan fungsi yang sangat biasa dalam aplikasi web moden. Dalam rangka kerja Laravel, muat naik dan pemprosesan fail menjadi sangat mudah dan cekap. Artikel ini akan memperkenalkan cara mengurus fail yang dimuat naik pengguna dalam Laravel, termasuk pengesahan, penyimpanan, pemprosesan dan paparan muat naik fail. 1. Muat naik fail Muat naik fail merujuk kepada memuat naik fail daripada klien ke pelayan. Dalam Laravel, muat naik fail sangat mudah dikendalikan. pertama,

Panduan muat naik fail PHP: Cara menggunakan fungsi move_uploaded_file untuk mengendalikan fail yang dimuat naik Panduan muat naik fail PHP: Cara menggunakan fungsi move_uploaded_file untuk mengendalikan fail yang dimuat naik Jul 30, 2023 pm 02:03 PM

Panduan muat naik fail PHP: Cara menggunakan fungsi move_uploaded_file untuk mengendalikan fail yang dimuat naik Dalam membangunkan aplikasi web, muat naik fail adalah keperluan biasa. PHP menyediakan fungsi yang mudah move_uploaded_file() untuk memproses fail yang dimuat naik. Artikel ini akan memperkenalkan anda cara menggunakan fungsi ini untuk melaksanakan fungsi muat naik fail. 1. Persediaan Sebelum memulakan, pastikan persekitaran PHP anda telah dikonfigurasikan dengan parameter muat naik fail. Anda boleh melakukannya dengan membuka php.in

Permudahkan pemprosesan muat naik fail dengan fungsi Golang Permudahkan pemprosesan muat naik fail dengan fungsi Golang May 02, 2024 pm 06:45 PM

Jawapan: Ya, Golang menyediakan fungsi yang memudahkan pemprosesan muat naik fail. Butiran: Jenis MultipartFile menyediakan akses kepada metadata dan kandungan fail. Fungsi FormFile mendapat fail tertentu daripada permintaan borang. Fungsi ParseForm dan ParseMultipartForm digunakan untuk menghuraikan data borang dan data borang berbilang bahagian. Menggunakan fungsi ini memudahkan proses pemprosesan fail dan membolehkan pembangun menumpukan pada logik perniagaan.

See all articles