Taiyo
2023 年 6 月 14 日午前 5:43
1
###・前提条件
現在、Multi-File Uploader プラグインを使用してファイルを複数選択して投稿できる機能を作成しています。問題としては、このプラグインでは指定したfileのfilesizeを参照できない点です。実装したい機能としてはfileを複数選択したのちにそのファイルのサイズの合計が50MB以上だった場合にエラーメッセージを表示するものです。
試したこと
試してみたことはtoolboxプラグインを使用してJavascriptでファイルサイズを測定できないか実装してみたところ、非同期でfileサイズの測定が遅く実用レベルにありませんでした。
Taiyo
2023 年 6 月 14 日午前 8:21
2
こちらの記事にてjavascriptを記述することで解決いたしました!
「いいね!」 1
Taiyo
2023 年 6 月 14 日午前 9:04
3
上記のwebサイトだと詳しく書いていなかったので備忘録のためにjavascriptを記述しておきます。
Toolboxプラグインを使用して
下記のjavascriptを記述しました。
function calculateTotalFileSize() {
var dzSizeElements = document.querySelectorAll('.dz-size');
var totalFileSize = 0;
dzSizeElements.forEach(function(element) {
var fileSizeText = element.textContent;
var fileSize = parseFloat(fileSizeText);
if (!isNaN(fileSize)) {
totalFileSize += fileSize;
}
});
return totalFileSize;
}
// 関数を呼び出し、結果を取得して出力
var result = calculateTotalFileSize();
console.log(result);
上記コードの内容
fileuploaderプラグインの.div-sizeに入っているファイルサイズへアクセスをして、全てのファイルサイズの合計を計算してconsoleというところに表示する。というような内容になっています。
「いいね!」 2
Taiyo
2023 年 6 月 20 日午前 5:26
4
このプラグインのfileサイズはBiMもKiBも同じ値になっていたので新しく全ての値をB( ビット)に置き換えて単位を同じにするコードを追記しました!ぜひ参考にしてください。
function calculateTotalFileSize() {
var dzSizeElements = document.querySelectorAll('.dz-size');
var totalFileSize = 0;
dzSizeElements.forEach(function(element) {
var fileSizeText = element.textContent;
var fileSize = parseFloat(fileSizeText);
if (!isNaN(fileSize)) {
if (fileSizeText.includes("MiB")) {
fileSize *= 1024000;
} else if (fileSizeText.includes("KiB")) {
fileSize *= 1024;
}
totalFileSize += fileSize;
}
});
return totalFileSize;
}
bubble_fn_a(calculateTotalFileSize());
「いいね!」 3