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

Javascript讀取上傳文件內(nèi)容/類(lèi)型/字節(jié)數(shù)

 更新時(shí)間:2019年04月30日 08:59:21   作者:Lockeyi  
這篇文章主要為大家詳細(xì)介紹了Javascript讀取上傳文件內(nèi)容/類(lèi)型/字節(jié)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在網(wǎng)站開(kāi)發(fā)的某些情況下我們需要上傳文件到服務(wù)器,在這個(gè)過(guò)程中可能會(huì)對(duì)文件做一定的限制,比如說(shuō)文件格式,文件大小等,在一些情況下我們上傳文件其實(shí)是為了獲取其中的內(nèi)容在前端區(qū)域展示,這個(gè)時(shí)候就不需要將文件上傳到服務(wù)器,完全可以通過(guò)Javascript來(lái)獲取上傳文件內(nèi)容然后進(jìn)行展示,既加快了操作速度,也減輕了服務(wù)器的負(fù)載和存儲(chǔ)。接下來(lái)就是一個(gè)實(shí)際操作的過(guò)程:

首先來(lái)看一下一個(gè)上傳文件對(duì)象的屬性:

UI設(shè)計(jì)(React+Material-ui)

...
const styles = theme => ({
formControl: {
 margin: theme.spacing.unit,
 minWidth: 120,
 width: '100%',
 },
 leftIcon: {
 marginRight: theme.spacing.unit,
 }
 })
...
 <Grid item xs>
 <FormControl
  className={classes.formControl}
  error={this.state.Err.includes('sqlStr')}
 >
  <TextField
  label="SQL"
  onChange={this.onTextChange('sqlStr')}
  value={this.state.sqlStr}
  placeholder="Add Select SQL here..."
  multiline
  InputLabelProps={{
   shrink: true,
  }}
  fullWidth
  rows={6}
  variant="outlined"
  />
  <FormHelperText>{this.state.sqlStrErr}</FormHelperText>
  <input
  style={{display: 'none'}}
  name="uploadSqlFile"
  id="uploadSqlFile"
  onChange={this.handleUploadSqlFile}
  type="file"
  />
  <label htmlFor="uploadSqlFile" style={{position: 'absolute', right: '0px',bottom: '20px', background:'#f5f0ff'}}>
  <Button color="primary" variant="outlined" component="span">
  <CloudUploadOutlined className={classes.leftIcon} />OR UPLOAD SQL FILE
  </Button>
  </label>
 </FormControl>
 </Grid>
 ...

效果圖如下:

操作綁定,分別包含前端文件內(nèi)容讀取和文件上傳

handleUploadSqlFile = event => {
 let that = this
 const selectedFile = event.target.files[0]
 if(selectedFile.type.includes('text') || selectedFile.type === ''){
  let reader = new FileReader();// !important
  reader.readAsText(selectedFile, "UTF-8");// !important
  reader.onload = function(evt){// !important
  let sqlStr = evt.target.result;// !important
  that.setState({
  Err: that.state.Err.filter(c => c !== 'sqlStr'),
  sqlStr: sqlStr,
  sqlStrErr: '*Avoid duplicated column fields',
  })
 }
 }else {
  let sqlStrErr = 'File format is not supported!'
  if ((selectedFile.size / 1024 / 1024).toFixed(4) >= 2) {//計(jì)算文件大小并且換算成M為單位
  sqlStrErr = 'File size exceeds the limitation (2M)!'
  }
  this.setState({
  Err: [...this.state.Err, 'sqlStr'],
  sqlStrErr: sqlStrErr
  })
 }
}

上邊的示例只是單純的前端文件內(nèi)容讀取,并未涉及文件上傳到服務(wù)器,接下來(lái)是:

import axios from 'axios'
...
handleUploadSqlFile = event => {
 const selectedFile = event.target.files[0]
 if ((selectedFile.size / 1024 / 1024).toFixed(4) >= 10) {
  this.setState({ sqlStrErr: 'File size exceeds the limitation (10M)!' })
 } else {
  const data = new FormData()
  data.append('file', selectedFile, selectedFile.name)
  axios
  .post('/api/utils/upload_file', data, {
   onUploadProgress: ProgressEvent => {
   this.setState({
    loaded: (ProgressEvent.loaded / ProgressEvent.total) * 100 - Math.random() * 16,//此值用來(lái)展示上傳進(jìn)度,好讓用戶知道目前的上傳狀態(tài)。
   })
   },
  })
  .then(res => {
   if (res.data.code === -1) {
   this.setState({ sqlStrErr: res.data.info })
   } else {
   this.setState({
    loaded: 100,
   })
   }
  })
 }
 }

如果看了上邊的代碼示例還搞不定歡迎留言提問(wèn)!

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

相關(guān)文章

  • 使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境

    使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了使用webpack搭建pixi.js開(kāi)發(fā)環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺析Javascript中雙等號(hào)(==)隱性轉(zhuǎn)換機(jī)制

    淺析Javascript中雙等號(hào)(==)隱性轉(zhuǎn)換機(jī)制

    這篇文章給大家詳細(xì)介紹了javascript中雙等號(hào)(==)隱性轉(zhuǎn)換機(jī)制,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-10-10
  • JS數(shù)組splice操作實(shí)例分析

    JS數(shù)組splice操作實(shí)例分析

    這篇文章主要介紹了JS數(shù)組splice操作,結(jié)合實(shí)例形式分析了javascript使用splice方法刪除數(shù)組元素相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 小程序多文件上傳 Tdesign的過(guò)程

    小程序多文件上傳 Tdesign的過(guò)程

    眾所周知,小程序文件上傳還是有點(diǎn)麻煩的,其實(shí)主要還是小程序?qū)Φ慕涌谟兄T多的不便,比如說(shuō),文件不能批量提交,只能一個(gè)個(gè)的提交,小程序的上傳需要專(zhuān)門(mén)的接口,現(xiàn)在給大家分享小程序多文件上傳 Tdesign的方法,感興趣的朋友一起看看吧
    2023-11-11
  • 微信小程序中如何實(shí)現(xiàn)輪播圖效果

    微信小程序中如何實(shí)現(xiàn)輪播圖效果

    這篇文章主要介紹了微信小程序中實(shí)現(xiàn)輪播圖效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • JS實(shí)現(xiàn)禁止鼠標(biāo)右鍵的功能

    JS實(shí)現(xiàn)禁止鼠標(biāo)右鍵的功能

    遇到網(wǎng)頁(yè)上有精美圖片或者精彩文字想保存時(shí),通常大家都是選中目標(biāo)后按鼠標(biāo)右鍵,在彈出菜單中選擇“圖片另存為”或“復(fù)制”來(lái)達(dá)到我們的目的。但是,目前有許多網(wǎng)頁(yè)都屏蔽了鼠標(biāo)右鍵,那么用js如何實(shí)現(xiàn)禁止鼠標(biāo)右鍵的功能呢?下面小編給大家介紹下
    2016-10-10
  • JavaScript庫(kù)之vanilla-tilt使用教程(一個(gè)平滑的3D傾斜庫(kù))

    JavaScript庫(kù)之vanilla-tilt使用教程(一個(gè)平滑的3D傾斜庫(kù))

    vanilla-tilt.js是Javascript中一個(gè)平滑的3D傾斜庫(kù),可以讓網(wǎng)頁(yè)的一些控件變得動(dòng)態(tài)起來(lái),下面這篇文章主要給大家介紹了關(guān)于JavaScript庫(kù)之vanilla-tilt使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Js數(shù)組排序函數(shù)sort()介紹

    Js數(shù)組排序函數(shù)sort()介紹

    本文給大家簡(jiǎn)單探討下Js數(shù)組排序函數(shù)sort()的用法和示例,有需要的小伙伴可以參考下。
    2015-06-06
  • 原生js實(shí)現(xiàn)shift/ctrl/alt按鍵的獲取

    原生js實(shí)現(xiàn)shift/ctrl/alt按鍵的獲取

    小測(cè)試shift、ctrl、alt按鍵的獲取,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-04-04
  • 在SSM框架下用laypage和ajax實(shí)現(xiàn)分頁(yè)和數(shù)據(jù)交互的方法

    在SSM框架下用laypage和ajax實(shí)現(xiàn)分頁(yè)和數(shù)據(jù)交互的方法

    今天小編大家分享一篇在SSM框架下用laypage和ajax實(shí)現(xiàn)分頁(yè)和數(shù)據(jù)交互的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09

最新評(píng)論

平昌县| 绍兴市| 大理市| 从化市| 锡林浩特市| 福建省| 左贡县| 牙克石市| 天长市| 嘉峪关市| 芜湖市| 乾安县| 平昌县| 兰州市| 咸丰县| 延安市| 二手房| 临城县| 团风县| 丰都县| 平武县| 阿尔山市| 紫阳县| 墨脱县| 汉沽区| 石柱| 新竹县| 南投县| 蚌埠市| 沭阳县| 湘阴县| 广平县| 皮山县| 吉安市| 平武县| 承德县| 达日县| 吉木萨尔县| 武川县| 聂拉木县| 莱西市|