国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
プロセスの概要
ファイルの MD5 固有の識別コードを取得する
文件切片
獲取文件名 name
分片文件大小 chunkSize
文件切片 chunkList 列表
切片總數(shù) chunks
切片大小  size
合并
ホームページ ウェブフロントエンド Vue.js vue がファイル スライス アップロードを?qū)g裝する方法の簡単な分析

vue がファイル スライス アップロードを?qū)g裝する方法の簡単な分析

Mar 24, 2023 pm 07:40 PM
vue.js ファイルのアップロード ファイルスライス

vue がファイル スライス アップロードを?qū)g裝する方法の簡単な分析

実際の開発プロジェクトのプロセスでは、比較的大きなファイルをアップロードする必要がある場合があり、その場合、アップロードが比較的遅くなり、バックグラウンドでフロントエンドの処理が必要になる場合があります。スライス アップロードは非常に簡単で、たとえば 1 G のファイル ストリームをいくつかの小さなファイル ストリームに分割し、これらの小さなファイル ストリームをそれぞれ配信するようにインターフェイスに要求します。

プロセスの概要

ファイル スライスのインポートを?qū)g裝するには、まず elementUI またはネイティブ アップロード タグを使用してファイル ファイル ストリームを取得し、次に行う必要があることが 1 つあります。このファイルが以前にアップロードされたかどうかを知るためです。このファイルの一意の識別子をバックエンドに送信して、バックエンドに問題が存在するかどうかをバックエンドに知らせる必要があります。この時點(diǎn)で、バックエンドは 3 つの値を返す可能性がありますステータス :

  • ファイルがありません。すべてアップロードする必要があります。

  • このファイルは存在するため、フロントエンドはそれを再度アップロードする必要はありません。

  • このファイルの一部はアップロードされました。アップロードされていない部分は引き続きアップロードする必要があります。

狀態(tài)はこれら 3 つだけです。このステップを?qū)g裝するための重要なパラメータは、ファイルの一意の識別子です。この識別子には、ファイルの MD5 識別コードが使用されます。したがって、最初にこのファイルの MD5 固有の識別コードを取得する必要があります。 [関連する推奨事項(xiàng): vuejs ビデオ チュートリアル 、Web フロントエンド開発 ]

ファイルをアップロードする必要がある場合、または部分的にアップロードする必要がある場合は、スライス操作を?qū)g行する必要があります。これは非常に単純で、例えばファイルのバイナリバイトストリームは合計1Gですが、通常は5Mごとに1つに分割されるため、1Gのファイルであれば205個に分割する必要があります。もちろん、最後の部分は必ずしも 5M である必要はなく、ファイルを部分的にアップロードし、ファイルを部分にインポートするリクエストを開始するためのインターフェイスに進(jìn)みます。

まず最初に、これらの 205 個の斷片化されたデータ ストリームを送信した後、背景をマージする必要があることを明確にしましょう。つまり、フラグメントによって送信された 205 個のファイル ストリームは、大きなファイルに合成されて保存されます。 . このようにして、バックグラウンドでマージされたファイルは、最終的にインポートのために送信するファイルになります。バックエンドはマージする必要があるため、それらを部分的にアップロードします。各部分がファイルのどの部分であるかをバックエンドに知らせる必要がありますは正しい?したがって、シャーディング リクエストを送信するときは、通常、次のパラメータを渡す必要があります:

  • chunk: 現(xiàn)在のシャード番號 (通常は 0 から始まります)。
  • chunkSize: フラグメントのサイズ。通常は 5M、つまり 5242880 バイトです。
  • chunks: シャードの合計數(shù)。
  • file: 現(xiàn)在のフラグメントのファイル ストリーム。
  • md5: 斷片化されていないファイル全體の MD5 固有の識別コード。
  • name: 現(xiàn)在のファイルの名前。
  • size: 現(xiàn)在のフラグメント サイズ (最後のブロックが必ずしも 5M ではない場合)。

これにより、バックエンドは最終ファイルをマージする方法を認(rèn)識します。もちろん、特定のフィールドはバックエンドによって定義される必要があり、その後、この考え方に従って接続できます。

OK、205 個のシャード データがすべて送信された後、バックエンドに通知するために別のインターフェイスを経由する必要があります。フロントエンド シャードが送信されたので、ファイルをマージできます。

これでバックエンドのマージが完了し、ファイルが正常にインポートされました。

ファイルの MD5 固有の識別コードを取得する

MD5 は暗號化ではないと多くの人が言いますが、実際、この考えはここではあまり正しくありません。MD5 は暗號化できませんファイルです。はい、一意のコードのみが生成されます。したがって、暗號化と考えてください。ただし、MD5 コードの送信が、暗號化されたファイルをバックエンドに送信するのと同じであるとは考えないでください。まず、これは次のとおりです。暗號化されたファイルではなく文字列であるため、第二に、これは復(fù)號化できません。ここではファイルの一意の識別子を生成するだけで、ファイルが以前にサーバー上に存在したかどうかをバックエンドが判斷できるようになります。一意の識別子がある場合は、以前にアップロードされたことを意味します。以前のものを使用せずにそのまま使用できます。結(jié)局のところ、ファイルが変更されると、MD5 識別コードが変更されます。

ファイルの MD5 エンコーディングを取得する方法は非常に簡単で、vue でライブラリ spark-md5 を使用する必要があります。

インストールするコマンドは 1 つです

npm install --save spark-md5

その後、それをカプセル化するメソッドを作成できます。

fileMd5Sum.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)
      }
    });
  }
}

その後、必要なときにそれを使用できます。もちろん、ここで返されるのは Promise です。単に .then# です。 ## わかった。

または、

async、await を使用します。

let md5Str = await this.fileMd5Sum.fileMd5Sum(file.raw)

文件切片

獲取了文件MD5標(biāo)識碼,后臺說需要提交,我們就需要把文件切片,從頭提交或者是提交部分操作了,如果不需要的話直接走合并接口就可以了,走合并接口其實(shí)是告訴后臺合并,我們要做的就是把其他除了文件相關(guān)的其他參數(shù)傳遞給后臺罷了。

文件切片就是類似于字符串截取,這里是截取字節(jié)。獲取需要的參數(shù)我們自己些就可以了。假設(shè)我們使用 elementUI 文件上傳組件獲取到了文件 file。

獲取文件名 name

let fileName = file.name  // 獲取文件名

分片文件大小 chunkSize

let chunkSize = 5 * 1024 * 1024   // 一般是 5M,具體多少看后端想要多少

文件切片 chunkList 列表

            let chunkList = []  // 創(chuàng)建一個數(shù)組用來存儲每一片文件流數(shù)據(jù)
            if (file.size < chunkSize) {  // 如果文件大小小于5M就只有一片,不用切都
              chunkList.push(file.raw.slice(0))  // 文件流從第一個字節(jié)直接截取到最后就可以了
            } else {  // 如果文件大小大于5M 就需要切片了
              var start = 0, end = 0  // 創(chuàng)建兩個變量 開始位置 結(jié)束位置
              while (true) {  // 循環(huán)
                end += chunkSize  // 結(jié)束為止 = 結(jié)束位置 + 每片大小
                let blob = file.raw.slice(start, end)  // 文件流從開始位置截取到結(jié)束位置
                start += chunkSize  // 截取完,開始位置后移
                if (!blob.size) {  // 如果截取不到了就退出
                  break;
                }
                chunkList.push(blob)  // 把截取的每一片數(shù)據(jù)保存到數(shù)組
              }
            }

切片總數(shù) chunks

我們上一步已經(jīng)獲取到每片文件流的數(shù)組了,所以說呢,直接獲取就可以了。

let chunks = chunkList.length

切片大小 size

我們是按照 5 M 切割的,所以說每片大小應(yīng)該是 5 * 1024 * 1024 但是呢,不對,因?yàn)樽詈笠黄灰欢ň褪钦玫?5 M,所以說我們可直接 .size 獲取一下大小。比如:

chunkList[0].size  // 獲取第1片大小

參數(shù)都找齊了,然后就走切片提交接口開始提交數(shù)據(jù)就可以了。

合并

當(dāng)我們把分片數(shù)據(jù)全部提交成功,后臺返回說切片文件保存成功之后,我們就可以走最后一個接口,提交就可以了。

好了,就這樣!完成?。?!

(學(xué)習(xí)視頻分享:vuejs入門教程、編程基礎(chǔ)視頻

以上がvue がファイル スライス アップロードを?qū)g裝する方法の簡単な分析の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Workerman ドキュメントにファイルのアップロードとダウンロードを?qū)g裝する Workerman ドキュメントにファイルのアップロードとダウンロードを?qū)g裝する Nov 08, 2023 pm 06:02 PM

Workerman ドキュメントでファイルのアップロードとダウンロードを?qū)g裝するには、特定のコード サンプルが必要です はじめに: Workerman は、シンプル、効率的、使いやすい高性能 PHP 非同期ネットワーク通信フレームワークです。実際の開発では、ファイルのアップロードとダウンロードが一般的な機(jī)能要件となりますが、この記事では、Workerman フレームワークを使用してファイルのアップロードとダウンロードを?qū)g裝する方法と、具體的なコード例を紹介します。 1. ファイル アップロード: ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送する操作を指します。以下が使用されます

Laravelを使用してファイルのアップロードおよびダウンロード機(jī)能を?qū)g裝する方法 Laravelを使用してファイルのアップロードおよびダウンロード機(jī)能を?qū)g裝する方法 Nov 02, 2023 pm 04:36 PM

Laravel を使用してファイルのアップロードおよびダウンロード機(jī)能を?qū)g裝する方法 Laravel は、Web アプリケーションの開発をより簡単かつ効率的にするための豊富な機(jī)能とツールを提供する人気のある PHP Web フレームワークです。よく使用される機(jī)能の 1 つは、ファイルのアップロードとダウンロードです。この記事では、Laravelを使用してファイルのアップロードおよびダウンロード機(jī)能を?qū)g裝する方法と、具體的なコード例を紹介します。ファイルのアップロード ファイルのアップロードとは、ローカル ファイルを保存するためにサーバーにアップロードすることを指します。 Laravelではファイルアップロードを使用できます

Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Apr 09, 2025 am 12:01 AM

VUE.JSは、中小規(guī)模のプロジェクトや迅速な反復(fù)に適していますが、Reactは大規(guī)模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な狀況やプロジェクトスケールが小さい狀況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機(jī)能的ニーズを持つプロジェクトに適しています。

Golang関數(shù)でファイルアップロード処理を簡素化 Golang関數(shù)でファイルアップロード処理を簡素化 May 02, 2024 pm 06:45 PM

回答: はい、Golang はファイルのアップロード処理を簡素化する機(jī)能を提供します。詳細(xì): MultipartFile タイプは、ファイルのメタデータとコンテンツへのアクセスを提供します。 FormFile 関數(shù)は、フォーム要求から特定のファイルを取得します。 ParseForm 関數(shù)と ParseMultipartForm 関數(shù)は、フォーム データとマルチパート フォーム データを解析するために使用されます。これらの機(jī)能を使用すると、ファイル処理プロセスが簡素化され、開発者はビジネス ロジックに集中できるようになります。

gRPC を使用して Golang でファイルのアップロードを?qū)g裝するにはどうすればよいですか? gRPC を使用して Golang でファイルのアップロードを?qū)g裝するにはどうすればよいですか? Jun 03, 2024 pm 04:54 PM

gRPC を使用してファイルのアップロードを?qū)g裝するにはどうすればよいですか?リクエストおよびレスポンスメッセージを含むサポートサービス定義を作成します。クライアントでは、アップロードされるファイルが開かれてチャンクに分割され、gRPC ストリーム経由でサーバーにストリーミングされます。サーバー側(cè)では、ファイル チャンクが受信され、ファイルに保存されます。ファイルのアップロードが完了すると、サーバーはアップロードが成功したかどうかを示す応答を送信します。

ファイルアップロードにHyperfフレームワークを使用する方法 ファイルアップロードにHyperfフレームワークを使用する方法 Oct 21, 2023 am 09:06 AM

ファイル アップロードに Hyperf フレームワークを使用する方法には、特定のコード サンプルが必要です はじめに: Web アプリケーションの開発に伴い、ファイル アップロード機(jī)能は多くのプロジェクトで不可欠な部分になっています。 Hyperf は、ファイルのアップロードなどの豊富な機(jī)能セットを提供する高性能 PHP マイクロサービス フレームワークです。この記事では、ファイルのアップロードに Hyperf フレームワークを使用する方法と、具體的なコード例を紹介します。 1. Hyperf フレームワークをインストールします。まず、Hyperf フレームワークをインストールする必要があります。コンポを渡すことができます

Golang でドラッグ アンド ドロップ ファイル アップロードを?qū)g裝するにはどうすればよいですか? Golang でドラッグ アンド ドロップ ファイル アップロードを?qū)g裝するにはどうすればよいですか? Jun 05, 2024 pm 12:48 PM

Golang でドラッグ アンド ドロップ ファイルのアップロードを?qū)g裝するにはどうすればよいですか?ミドルウェアを有効にし、ファイルのアップロード要求を処理します。ドラッグ アンド ドロップ領(lǐng)域の HTML コードを作成し、ドラッグ アンド ドロップ イベントを処理するための JavaScript コードを追加します。

Vue.jsは學(xué)ぶのが難しいですか? Vue.jsは學(xué)ぶのが難しいですか? Apr 04, 2025 am 12:02 AM

Vue.jsは、特にJavaScriptファンデーションを持つ開発者にとって、學(xué)ぶのは難しくありません。 1)その進(jìn)歩的な設(shè)計とレスポンシブシステムは、開発プロセスを簡素化します。 2)コンポーネントベースの開発により、コード管理がより効率的になります。 3)使用例は、基本的および高度な使用法を示しています。 4)一般的なエラーは、vuedevtoolsを介してデバッグできます。 5)V-IF/V-Showや重要な屬性を使用するなど、パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率を向上させることができます。

See all articles