亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

antd組件Upload實現(xiàn)自己上傳的實現(xiàn)示例

 更新時間:2018年12月18日 09:12:37   作者:貓蘸畫  
這篇文章主要介紹了antd組件Upload實現(xiàn)自己上傳的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

在實現(xiàn)圖片上傳時,可能需要用到Upload,但是它默認的上傳方式是加入圖片后直接上傳,如果要實現(xiàn)最后再一次性上傳,需要自定義內(nèi)容。

//添加按鈕的樣式
const uploadButton = (
  <div>
  <Icon type="plus" />
  <div className="ant-upload-text">Upload</div>
  </div>
 );


<Upload
    //樣式
    className={styles['override-ant-btn']}
    //陳列樣式,現(xiàn)在是卡片式
    listType="picture-card"
    //再圖片上傳到頁面后執(zhí)行的函數(shù),自定義讓他不執(zhí)行
    beforeUpload={() => false}
    //數(shù)據(jù),即圖片,是一個數(shù)組
    fileList={fileList}
    //當點擊查看時調(diào)用(上圖的那個眼睛)
    onPreview={this.handlePreview}
    //數(shù)據(jù)改變時調(diào)用
    onChange={this.handleChange}
   >
    //當不少于一張圖時,不顯示怎加圖片的按鈕。
    {fileList.length >= 1 ? null : uploadButton}
   </Upload>

還有一個移除時調(diào)用的函數(shù)onRemove(),即點擊上圖的垃圾桶,這里沒有定義。

 handlePreview = (file) => {
 this.setState({
  previewImage: file.url || file.thumbUrl,
  visible: true,
 });
 };


  <Modal visible={visible} footer={null} onCancel={this.handleCancel}>
    <img alt="加載" style={{ width: '100%',height: '100%' }} src={previewImage} />
  </Modal>

利用Modal顯示圖片。

handleChange = ({ fileList }) => {
 this.setState({ fileList });
};

數(shù)據(jù)改變時直接重設(shè)fileList數(shù)組的值(我這里只有一張圖可以這么做)。

最后是fileList的一些基本設(shè)置:

fileList: [{
   uid: 'id',
   name: '標題',
   //目前的狀態(tài)
   status: 'done',
   //圖片的url或者base64
   url: '',
   type: 'image/jpeg',
  }],

PS:基于antd的上傳文件進度條

核心代碼

//通過前端原生XMLHttpRequest動態(tài)獲取上傳文件進度
doTransferFile = (file) => {
 let mySelf = this;
 let formData = new FormData();
 let url = "http://xxx:444/upload_file.php";
 let file = document.getElementById("chooseFile").files[0];
 console.log(file)
 
 formData.append("file",file);
 // console.log(modal);
 // console.log(formData);
 // return false;
 /* eslint-disable */
 $.ajax({ 
  url : url, 
  type : 'POST',
  enctype: 'multipart/form-data',
  data : formData, 
  // 告訴jQuery不要去處理發(fā)送的數(shù)據(jù)
  processData : false, 
  // 告訴jQuery不要去設(shè)置Content-Type請求頭
  contentType : false,
  timeout : 60000,//設(shè)置超時時間
  beforeSend:function(){
   console.log("現(xiàn)在開始上傳文件!");
 notification['info']({
 message: '提示',
 description: '現(xiàn)在開始上傳文件!',
 });
  },
  xhr: function(){
 let myXhr = $.ajaxSettings.xhr();
 // console.log(myXhr)
 if(myXhr.upload){
 myXhr.upload.addEventListener('progress',function(e) {
  if (e.lengthComputable) {
  let percent = Math.floor((e.loaded/e.total)*100);
  // console.log(e.loaded)
  // console.log(e.total)
  console.log(percent)
  let upload = mySelf.state.upload;
  upload.progress.loaded = e.loaded;
  upload.progress.total = e.total;
  upload.progress.percentage = percent;
  mySelf.state.upload = upload;
 
  // console.log(info);
   mySelf.setState({
    upload: upload
   });
  }
 },false);
 
 myXhr.upload.addEventListener('load',function(e) {
  console.log('fish')
 },false);
 
 }
 return myXhr;
  },
  success : function(res) {
   console.log(res)
 
  }, 
  error : function(res) { 
 
  } 
 });
};

在antd框架下,調(diào)用的Progress組件動態(tài)展示的上傳文件進度,效果圖如下,待全部上傳成功后,由接口返回上傳文件的大小,路徑等信息,render到頁面上

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論