react.js

react之Ant Design upload上传图片前使用Pr

2018-06-22  本文已影响0人  钱学敏

实现限制图片上传格式、尺寸、分辨率的限制

官网API如下:


image.png

实现方式

//checkImageWH  返回一个promise  检测通过返回resolve  失败返回reject阻止图片上传
    checkImageWH(file, width, height) {
        let self = this;
        return new Promise(function (resolve, reject) {
            let filereader = new FileReader();
            filereader.onload = e => {
                let src = e.target.result;
                const image = new Image();
                image.onload = function () {
                    if (width && this.width != width) {
                        Modal.error({
                            title: '请上传宽为' + width + '的图片'
                        })
                        reject();
                    } else if (height && this.height != height) {
                        Modal.error({
                            title: '请上传高为' + height + '的图片',
                        })
                        reject();
                    } else {
                        resolve();
                    }
                };
                image.onerror = reject;
                image.src = src;
            };
            filereader.readAsDataURL(file);
        });
    }
    handleBeforeUpload = (file) => {
        //限制图片 格式、size、分辨率
        const isJPG = file.type === 'image/jpeg';
        // const isJPEG  = file.type === 'image/jpeg';
        const isGIF = file.type === 'image/gif';
        const isPNG = file.type === 'image/png';
        if (!(isJPG || isGIF || isPNG)) {
            Modal.error({
                title: '只能上传JPG 、JPEG 、GIF、 PNG格式的图片~'
            })
        }
        const isLt2M = file.size / 1024 / 1024 < 2;
        if (!isLt2M) {
            Modal.error({
                title: '超过2M限制 不允许上传~'
            })
        }
        return (isJPG || isGIF || isPNG ) && isLt2M && this.checkImageWH(file, 1268, 950);
    }
<Upload
                            action={action}
                            data={{project_id: this.props.projectId}}
                            listType="picture-card"
                            fileList={fileList}
                            multiple={true}
                            showUploadList={false}
                            onPreview={this.handlePreview}
                            onChange={this.handleChange}
                            beforeUpload={this.handleBeforeUpload}
                        >
                            {!this.state.locaImagesShow ? null : uploadButton}
                        </Upload>
上一篇下一篇

猜你喜欢

热点阅读