最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

antd?upload上傳如何獲取文件寬高

 更新時間:2023年02月12日 14:23:43   作者:wo_dxj  
這篇文章主要介紹了antd?upload上傳如何獲取文件寬高問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

antd upload上傳獲取文件寬高

項目新加的需求,需要判斷上傳圖片的寬高,查了一下antd-upload組件貌似不支持這個查詢,因此需要使用外部的API

直接上代碼:beforeUpload 方法

handleBeforeUpload = async (file, fileList) => {
? ? ? ? const {fileMinSize = 0,fileMinWH,fileMaxWH, fileMaxSize = 50,uploadFormat = '',uploadFormatError = ''} = this.component.props;
? ? ? ? const isInRange = ((file.size > (fileMinSize * 1024 * 1024)) && (file.size < (fileMaxSize * 1024 * 1024)));
? ? ? ? let isTrueType = true,isFileWH = true;//類型,尺寸
? ? ? ? return new Promise((resolve, reject) =>{
? ? ? ? ? ? //校驗格式
? ? ? ? ? ? if(uploadFormat != ''){
? ? ? ? ? ? ? ? let acceptArr = uploadFormat.split(',');
? ? ? ? ? ? ? ? let fileType = file.name.substring(file.name.lastIndexOf('.'));
? ? ? ? ? ? ? ? if(!acceptArr.includes(fileType)){
? ? ? ? ? ? ? ? ? ? isTrueType = false;
? ? ? ? ? ? ? ? ? ? this.message.error((uploadFormatError == '') ? '請上傳規(guī)則范圍內(nèi)的文件!' : uploadFormatError);
? ? ? ? ? ? ? ? ? ? this.base.ss({'data.fileList': fileList.pop()});
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? //校驗大小
?
? ? ? ? ? ? if (!isInRange) {//大小的標識
? ? ? ? ? ? ? ? this.message.error((fileMaxSize == 50) ? '請上傳規(guī)則范圍內(nèi)的文件!' : '文件最大不能超過'+ fileMaxSize + 'M!');
? ? ? ? ? ? ? ? this.base.ss({'data.fileList': fileList.pop()});
? ? ? ? ? ? }
?
?
? ? ? ? ? ? //校驗寬高
? ? ? ? ? ? /*********************************/
?
? ? ? ? ? ? if(fileMinWH && fileMaxWH){//做下過濾有的圖片需要過濾
? ? ? ? ? ? ? ? var reader = new FileReader();
? ? ? ? ? ? ? ? reader.readAsDataURL(file);
? ? ? ? ? ? ? ? reader.onload = (e) => {
? ? ? ? ? ? ? ? ? ? //加載圖片獲取圖片真實寬度和高度
? ? ? ? ? ? ? ? ? ? var image = new Image();
? ? ? ? ? ? ? ? ? ? image.src=reader.result;
? ? ? ? ? ? ? ? ? ? image.onload = () =>{
? ? ? ? ? ? ? ? ? ? ? ? var width = image.width;//圖片的寬
? ? ? ? ? ? ? ? ? ? ? ? var height = image.height;//圖片的高
? ? ? ? ? ? ? ? ? ? ? ? if(width < fileMinWH ?|| width > fileMaxWH || height < fileMinWH ?|| height > fileMaxWH){
? ? ? ? ? ? ? ? ? ? ? ? ? ? isFileWH = false;
? ? ? ? ? ? ? ? ? ? ? ? ? ? this.message.error('***寬高需要均大于600像素,小于4000像素');
? ? ? ? ? ? ? ? ? ? ? ? ? ? this.base.ss({'data.fileList': []});
? ? ? ? ? ? ? ? ? ? ? ? ? ? reject();
? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? resolve(isFileWH && isInRange && isTrueType)
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? /**********************************/
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? resolve(isInRange && isTrueType);
? ? ? ? ? ? }
? ? ? ? })
? ? };

這樣這個功能就可以完美的解決了,*包著的代碼是最主要的。

antd上傳文件限制大小 react Hooks

 const uploadImages = {
        action: requestUrl + '/api/common/CommonUpload',
        headers: {
            SessionKey: `${localStorage.getItem('sk')}`,
        },
        data: (file) => {
            return {
                UploadType: 1027,//后端定義的type
                Id: uuidv4(),
                FileType: getUploadFileType(file),
            };
        },
        beforeUpload: (file) => {// 禮品image
            const limitFileNameLen = 100;
            return new Promise((resolve, reject) => {
                if (file.name && file.name.length > limitFileNameLen) {
                    message.error('Please upload a file with a file name less than 100 characters');
                    //請上傳文件名不超過100個字符的文件
                    return Promise.reject();
                }
                const limitM = 2;
                const isLimit = file.size / 1024 / 1024 <= limitM;
                console.log(isLimit);
                if (!isLimit) {
                    message.error('The size exceeds the limit');
                    return Promise.reject();
                }
                return resolve();
            });
        },
    }

模板:

?<Upload
? ? ? ? ? ? ? ? {...uploadImages}
? ? ? ? ? ? ? ? accept=".jpeg,.png,.jpg"
? ? ? ? ? ? ? ? listType="picture-card"
? ? ? ? ? ? ? ? fileList={fileList}
? ? ? ? ? ? ? ? onChange={handleChange}
? ? ? ? ? ? ? ? onPreview={handlePreview}
? ? ? ? ? ? >
? ? ? ? ? ? ? ? {fileList.length >= 4 ? null : uploadButton}
? ? ? ? ? ? </Upload>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • React-router v4 路由配置方法小結(jié)

    React-router v4 路由配置方法小結(jié)

    本篇文章主要介紹了React-router v4 路由配置方法小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 解決React報錯The?tag?is?unrecognized?in?this?browser

    解決React報錯The?tag?is?unrecognized?in?this?browser

    這篇文章主要為大家介紹了解決React報錯The?tag?is?unrecognized?in?this?browser示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • React+Webpack快速上手指南(小結(jié))

    React+Webpack快速上手指南(小結(jié))

    這篇文章主要介紹了React+Webpack快速上手指南(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • react redux入門示例

    react redux入門示例

    本篇文章主要介紹了react redux入門示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 從零搭建react+ts組件庫(封裝antd)的詳細過程

    從零搭建react+ts組件庫(封裝antd)的詳細過程

    這篇文章主要介紹了從零搭建react+ts組件庫(封裝antd),實際上,代碼開發(fā)過程中,還有很多可以輔助開發(fā)的模塊、流程,本文所搭建的整個項目,我都按照文章一步一步進行了git提交,開發(fā)小伙伴可以邊閱讀文章邊對照git提交一步一步來看
    2022-05-05
  • React?跨端動態(tài)化核心技術實例分析

    React?跨端動態(tài)化核心技術實例分析

    這篇文章主要為大家介紹了React?跨端動態(tài)化核心技術實例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • React之PureComponent的使用作用

    React之PureComponent的使用作用

    這篇文章主要介紹了React之PureComponent的使用作用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • React Navigation 路由傳參的操作代碼

    React Navigation 路由傳參的操作代碼

    這篇文章主要介紹了React Navigation 路由傳參,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • React實現(xiàn)雙向綁定示例代碼

    React實現(xiàn)雙向綁定示例代碼

    這篇文章給大家介紹了在React中如何實現(xiàn)雙向綁定,文中給出了示例代碼,對大家的理解與學習很有幫助,有需要的朋友下面來一起看看吧。
    2016-09-09
  • react的ui庫antd中form表單使用SelectTree反顯問題及解決

    react的ui庫antd中form表單使用SelectTree反顯問題及解決

    這篇文章主要介紹了react的ui庫antd中form表單使用SelectTree反顯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

恭城| 白玉县| 和田县| 怀仁县| 日土县| 庐江县| 延安市| 邳州市| 东兴市| 疏附县| 抚松县| 台南市| 曲沃县| 西青区| 密山市| 中阳县| 惠水县| 莱西市| 拉孜县| 盐边县| 扶绥县| 三河市| 泽州县| 陆良县| 龙陵县| 乐至县| 抚宁县| 万宁市| 沅江市| 桐庐县| 铁岭县| 桃园县| 华安县| 弥渡县| 霸州市| 商河县| 宣威市| 隆尧县| 五大连池市| 鲁甸县| 延庆县|