Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮

系列文章目錄

第十章 Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮


Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮

  • 系列文章目錄
  • 進度條顯示
  • 文件過濾
  • 圖片預覽
  • 圖片壓縮


進度條顯示

使用進程文件上傳時,進度條顯示是一個常用的功能,而WebUploader組件也是支持的。

文件上傳中,Web Uploader會對外派送uploadProgress事件,其中包含文件對象和該文件當前上傳進度。

我們這里只需要在JS中添加以上事件就可以了。

  // 文件上傳過程中創建進度條實時顯示。uploader.on('uploadProgress', function (file, percentage) {let $li = $('#' + file.id),$percent = $li.find('.progress .progress-bar');// 避免重復創建if (!$percent.length) {$percent = $('<div class="progress progress-striped active">' +'<div class="progress-bar" role="progressbar" style="width: 0%">' +'</div>' +'</div>').appendTo($li).find('.progress-bar');}$li.find('p.state').text('上傳中(' + ((percentage * 100).toFixed(2) + '%') + ')');$percent.css('width', percentage * 100 + '%');});

注意,這里有一個坑,進度條的樣式需要自己配置,所以要在webuploader.css文件中添加以下CSS樣式。

.progress {height: 20px;margin-bottom: 20px;overflow: hidden;background-color:f5f5f5;border-radius: 4px;-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
}
.progress.active .progress-bar {-webkit-animation: progress-bar-stripes 2s linear infinite;animation: progress-bar-stripes 2s linear infinite;
}.progress-striped .progress-bar {background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size: 40px 40px;
}
.progress-bar {background-image: -webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image: linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat: repeat-x;filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=’#ff428bca’,endColorstr=’#ff3071a9’,GradientType=0);
}
.progress-bar {float: left;height: 100%;font-size: 12px;line-height: 20px;color:fff;text-align: center;background-color:428bca;box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);transition: width .6s ease;
}

點擊上傳,進度條就成功顯示了


文件過濾

文件過濾可以對添加的文件類型進行限制,比如只能上傳圖片,這也是一個常用的功能。

實際使用時,只需要在初始化uploader時,添加accept配置就可以了。比如以下代碼表示,只能添加圖片。

// 初始化Web Uploaderconst uploader = WebUploader.create({// swf文件路徑swf: 'static/Uploader.swf',server: '/minio/upload',// 文件接收服務端。pick: '#picker',// 選擇文件的按鈕。可選。內部根據當前運行是創建,可能是input元素,也可能是flash. 這里是div的idmethod: 'POST', // 文件上傳方式,POST或者GET,默認Postresize: false,// 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳!// 只允許選擇圖片文件。accept: {title: 'Images',extensions: 'gif,jpg,jpeg,bmp,png',mimeTypes: 'image/*'}});

點擊選擇文件,發現只能選擇圖片類型。就算選擇到了非圖片類型,也無法添加到上傳隊列中。

圖片預覽

WebUploader支持在添加圖片后,展示預覽圖。監聽fileQueued事件,通過uploader.makeThumb來創建圖片預覽圖。 注意這里得到的是Data URL數據,IE6、IE7不支持直接預覽。可以借助FLASH或者服務端來完成預覽。

這里我們添加一個fileQueued事件。

// 當有文件添加進來的時候uploader.on('fileQueued', function (file) {// 縮略圖大小var ratio = window.devicePixelRatio || 1;var thumbnailWidth = 100 * ratio;var thumbnailHeight = 100 * ratio;var $ = jQuery;var $list = $('#list');var $li = $('<div id="' + file.id + '" class="file-item thumbnail">' +'<img>' +'<div class="info">' + file.name + '</div>' +'</div>'),$img = $li.find('img');// $list為容器jQuery實例$list.append($li);// 創建縮略圖// 如果為非圖片文件,可以不用調用此方法。// thumbnailWidth x thumbnailHeight 為 100 x 100uploader.makeThumb(file, function (error, src) {if (error) {$img.replaceWith('<span>不能預覽</span>');return;}$img.attr('src', src);}, thumbnailWidth, thumbnailHeight);});

然后點擊選擇文件,預覽圖效果就出來了。

圖片壓縮

支持常用圖片格式jpg,jpeg,gif,bmp,png預覽與壓縮,節省網絡數據傳輸。

解析jpeg中的meta信息,對于各種orientation做了正確的處理,同時壓縮后上傳保留圖片的所有原始meta數據。

只需要在初始化添加compress,配置壓縮的圖片的選項。如果此選項為false, 則圖片在上傳前不進行壓縮。

比如以下代碼表示對圖片進行壓縮。

// 初始化Web Uploaderconst uploader = WebUploader.create({// swf文件路徑swf: 'static/Uploader.swf',server: '/minio/upload',// 文件接收服務端。pick: '#picker',// 選擇文件的按鈕。可選。內部根據當前運行是創建,可能是input元素,也可能是flash. 這里是div的idmethod: 'POST', // 文件上傳方式,POST或者GET,默認Postresize: false,// 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳!compress:{width: 100,height: 100,// 圖片質量,只有type為image/jpeg的時候才有效。quality: 50,// 是否允許放大,如果想要生成小圖的時候不失真,此選項應該設置為false.allowMagnify: false,// 是否允許裁剪。crop: false,// 是否保留頭部meta信息。preserveHeaders: true,// 如果發現壓縮后文件大小比原來還大,則使用原來圖片// 此屬性可能會影響圖片自動糾正功能noCompressIfLarger: false,// 單位字節,如果圖片大小小于此值,不會采用壓縮。compressSize: 0}});

然后在頁面上上傳一個170K的文件:
然后登錄Minio,發現圖片被壓縮到了2.4k。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15053.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于springboot+html的二手交易平臺(附源碼)

基于springboothtml的二手交易平臺 介紹部分界面截圖如下聯系我 介紹 本系統是基于springboothtml的二手交易平臺&#xff0c;數據庫為mysql&#xff0c;可用于畢設或學習&#xff0c;附數據庫 部分界面截圖如下 聯系我 VX&#xff1a;Zzllh_

java Iterable和 Iterator接口區別和聯系

Iterable 和 Iterator 是 Java 集合框架中用于遍歷集合元素的兩個接口,它們之間既有區別也有聯系。下面詳細介紹它們的區別和聯系。 Iterable 接口 定義 Iterable 接口位于 java.lang 包中,定義如下: public interface Iterable<T> {Iterator<T> iterator()…

在家庭影院音頻中應用的D類音頻放大器

家庭影院的主要組成部分包括顯示設備、音響設備、信號源和接線設備等。家庭影院的音響信號需要進行處理和輸出&#xff0c;以獲得高質量的音效。音響設備通常需要一臺功率適當的數字、模擬混合的處理器&#xff0c;對音源進行降噪、均衡、擴展等處理操作&#xff0c;以達到高品…

核心交換機與終端通信正常,接入交換機無法Ping通同一VLAN內終端

環境: 思科3560交換機 問題描述: 核心交換機與PC通信正常,接入交換機無法Ping通同一VLAN內PC h3c核心交換機配置vlan2 vlanif2 IP192.168.1.1 下掛接入交換機配置了vlan2 pc接到接入交換機25口這個端口配置access vlan2,pc的ip是192.168.1.3從 核心交換機上ping192.168.…

【智能算法應用】北方蒼鷹算法求解二維柵格路徑規劃問題

目錄 1.算法原理2.二維路徑規劃數學模型3.結果展示4.參考文獻5.代碼獲取 1.算法原理 【智能算法】北方蒼鷹優化算法&#xff08;NGO)原理及實現 2.二維路徑規劃數學模型 柵格法模型最早由 W.E. Howden 于 1968 年提出&#xff0c;障礙物的柵格用黑色表示&#xff0c;可通過的…

ping 探測網段哪些地址被用

#!/bin/bash# 遍歷192.168.3.1到192.168.3.254 for i in {1..254} doip"192.168.3.$i"# 對每個IP地址進行三次ping操作if ping -c 3 -W 1 $ip > /dev/null 2>&1thenecho "$ip: yes"fi done$ sh test.sh 192.168.3.1: yes 192.168.3.95: yes 192.…

使用Word表格數據快速創建圖表

實例需求&#xff1a;Word的表格如下所示&#xff0c;標題行有合并單元格。 現在需要根據上述表格數據&#xff0c;在Word中創建如下柱圖。如果數據在Excel之中&#xff0c;那么創建這個圖并不復雜&#xff0c;但是Word中就沒用那么簡單了&#xff0c;雖然Word中可以插入圖表&a…

014_C標準庫函數之<stdio.h>

【背景】 今天這個主要說的是<stdio.h>頭文件&#xff0c;大家眾所周知&#xff0c;這個是我們學習C語言時第一個接觸到的頭文件了&#xff0c;那么為什么我不一開始就介紹這個頭文件呢&#xff1f;我覺得有兩個原因&#xff0c;如下&#xff1a; 1.一開始大家的編程思…

LeetCode/NowCoder-鏈表經典算法OJ練習3

孜孜不倦&#xff1a;孜孜&#xff1a;勤勉&#xff0c;不懈怠。指工作或學習勤奮不知疲倦。&#x1f493;&#x1f493;&#x1f493; 目錄 說在前面 題目一&#xff1a;返回倒數第k個節點 題目二&#xff1a;鏈表的回文結構 題目三&#xff1a;相交鏈表 SUMUP結尾 說在前…

Pytorch: 解決因pytorch版本不同 導致訓練ckpt加載失敗

大家都會遇到在工程項目實施階段&#xff0c;如果訓練的模型文件在不同的torch版本環境下部署時&#xff0c;會報錯~。 報錯舉例 # 查看torch環境 import torch print(torch.__version__)# 訓練時環境&#xff1a;torch 1.8.2cu111 # 部署時環境&#xff1a;torch 1.4.0torch.…

dcatAdmin框架 使用phpword 生成word文件

下載phpword插件 composer require phpoffice/phpword 生成word文件接口 static public function word(){//接收傳值$order_id request()->get(order_id);$tpl_id request()->get(tpl_id);//查詢出對應的數據以及關聯數據$sale_order \App\Models\SaleOrder::with([…

Python異步編程之基礎概念

Python異步編程之基礎概念 在現代編程中&#xff0c;異步編程是一種重要的技術&#xff0c;尤其是在處理I/O密集型任務時&#xff0c;異步編程可以大大提高程序的性能和響應速度。本文將介紹Python異步編程的基礎概念&#xff0c;幫助你理解其原理和應用。 什么是異步編程&am…

【代碼隨想錄算法訓練營第37期 第十七天 | LeetCode110.平衡二叉樹、257. 二叉樹的所有路徑、404.左葉子之和】

代碼隨想錄算法訓練營第37期 第十七天 | LeetCode110.平衡二叉樹、257. 二叉樹的所有路徑、404.左葉子之和 一、110.平衡二叉樹 解題代碼C&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *righ…

三、NVIDIA Jetson Orin開發板-GPU加速

一、NVIDIA Jetson Orin開發板的硬件情況 df -h#查看操作系統情況Filesystem Size Used Avail Use% Mounted on **/dev/nvme0n1p1** 234G 17G 208G 8% / none 7.4G 0 7.4G 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs …

LeetCode 2644.找出可整除性得分最大的整數:暴力模擬(兩層循環)

【LetMeFly】2644.找出可整除性得分最大的整數&#xff1a;暴力模擬&#xff08;兩層循環&#xff09; 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/find-the-maximum-divisibility-score/ 給你兩個下標從 0 開始的整數數組 nums 和 divisors 。 divisors[i] 的 …

MySQL庫/表/數據的操作

文章目錄 1.數據庫操作1.1 創建、刪除、查看和修改1.2 編碼格式1.3 備份和恢復 2.表的操作2.1 創建表2.2 存儲引擎2.3 查看表、修改表、刪除表 3.數據類型3.1整數類型3.2字節類型(bit)3.3浮點類型(bit)3.4 decimal3.5 字符串類型3.6 日期和時間類型3.7 enum和set關于如何查找想…

webpack 學習之 五大核心

為什么用 webpack webpack 官網傳送門 … 官網&#xff1a;webpack 是一個用于現代 JavaScript 應用程序的 靜態模塊打包工具。將你項目中所需的每一個模塊組合成一個或多個 bundles&#xff0c;它們均為靜態資源&#xff0c;用于展示你的內容。總結&#xff1a;匯總所有模塊…

Python中別再用 ‘+‘ 拼接字符串了!

大家好&#xff0c;在 Python 編程中&#xff0c;我們常常需要對字符串進行拼接。你可能會自然地想到用 操作符將字符串連接起來&#xff0c;畢竟這看起來簡單明了。 在 Python 中&#xff0c;字符串是不可變的數據類型&#xff0c;這意味著一旦字符串被創建&#xff0c;它就…

【Python】—— lambda表達式

目錄 &#xff08;一&#xff09;應用場景 &#xff08;二&#xff09;lambda 語法 &#xff08;三&#xff09;示例分析 &#xff08;四&#xff09;lambda參數形式 4.1 無參數 4.2 一個參數 4.3 默認參數 4.4 可變參數 &#xff1a;*args 4.5 可變參數 &#xff1a;…

【Python爬蟲】案例_github模擬登錄

import requests import re from datetime import datetimedef login():sessionrequests.session()session.headers {User-Agent :XXXX #寫自己的}url1 https://github.com/loginres_1 session.get(url1).content.decode()token re.findall(name"authenticity_token&q…