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

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

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

前言

在實(shí)現(xiàn)圖片上傳時(shí),可能需要用到Upload,但是它默認(rèn)的上傳方式是加入圖片后直接上傳,如果要實(shí)現(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"
    //再圖片上傳到頁(yè)面后執(zhí)行的函數(shù),自定義讓他不執(zhí)行
    beforeUpload={() => false}
    //數(shù)據(jù),即圖片,是一個(gè)數(shù)組
    fileList={fileList}
    //當(dāng)點(diǎn)擊查看時(shí)調(diào)用(上圖的那個(gè)眼睛)
    onPreview={this.handlePreview}
    //數(shù)據(jù)改變時(shí)調(diào)用
    onChange={this.handleChange}
   >
    //當(dāng)不少于一張圖時(shí),不顯示怎加圖片的按鈕。
    {fileList.length >= 1 ? null : uploadButton}
   </Upload>

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

 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í)直接重設(shè)fileList數(shù)組的值(我這里只有一張圖可以這么做)。

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

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

PS:基于antd的上傳文件進(jìn)度條

核心代碼

//通過(guò)前端原生XMLHttpRequest動(dòng)態(tài)獲取上傳文件進(jìn)度
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請(qǐng)求頭
  contentType : false,
  timeout : 60000,//設(shè)置超時(shí)時(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組件動(dòng)態(tài)展示的上傳文件進(jìn)度,效果圖如下,待全部上傳成功后,由接口返回上傳文件的大小,路徑等信息,render到頁(yè)面上

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

漯河市| 三都| 东明县| 岐山县| 昭平县| 米林县| 德化县| 江北区| 宁城县| 康乐县| 新丰县| 唐山市| 鄯善县| 黔西县| 卓资县| 龙胜| 扬州市| 珠海市| 淮北市| 朝阳市| 吉木萨尔县| 洮南市| 兴文县| 五河县| 洪湖市| 晋宁县| 南阳市| 河北省| 津南区| 扎赉特旗| 比如县| 都匀市| 兴义市| 丰镇市| 民县| 蓝田县| 仙桃市| 景洪市| 邵武市| 喜德县| 威海市|