欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript讀取上傳文件內容/類型/字節(jié)數

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

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

首先來看一下一個上傳文件對象的屬性:

UI設計(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>
 ...

效果圖如下:

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

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) {//計算文件大小并且換算成M為單位
  sqlStrErr = 'File size exceeds the limitation (2M)!'
  }
  this.setState({
  Err: [...this.state.Err, 'sqlStr'],
  sqlStrErr: sqlStrErr
  })
 }
}

上邊的示例只是單純的前端文件內容讀取,并未涉及文件上傳到服務器,接下來是:

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,//此值用來展示上傳進度,好讓用戶知道目前的上傳狀態(tài)。
   })
   },
  })
  .then(res => {
   if (res.data.code === -1) {
   this.setState({ sqlStrErr: res.data.info })
   } else {
   this.setState({
    loaded: 100,
   })
   }
  })
 }
 }

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

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

相關文章

  • js取小數點后兩位四種方法

    js取小數點后兩位四種方法

    在本篇文章里小編給大家分享了關于js取小數點后兩位四種方法和實例代碼,需要的朋友們學習下。
    2019-01-01
  • 輕松實現Bootstrap圖片輪播

    輕松實現Bootstrap圖片輪播

    這篇文章主要介紹了全面解析Bootstrap圖片輪播效果,Bootstrap提供了carousel插件,實現圖片輪播非常方便,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 基于D3.js實現時鐘效果

    基于D3.js實現時鐘效果

    這篇文章主要為大家詳細介紹了基于D3.js實現時鐘效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • ES6中Set和Map數據結構,Map與其它數據結構互相轉換操作實例詳解

    ES6中Set和Map數據結構,Map與其它數據結構互相轉換操作實例詳解

    這篇文章主要介紹了ES6中Set和Map數據結構,Map與其它數據結構互相轉換操作,結合實例形式詳細分析了ES6中的Set和Map數據結構的概念、原理、遍歷、去重等操作,以及Map與其它數據結構互相轉換操作,需要的朋友可以參考下
    2019-02-02
  • 基于JavaScript實現輪播圖原理及示例

    基于JavaScript實現輪播圖原理及示例

    這篇文章主要為大家詳細介紹了基于JavaScript實現輪播圖原理及示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 無限循環(huán)輪播圖之運動框架(原生JS實現)

    無限循環(huán)輪播圖之運動框架(原生JS實現)

    下面小編就為大家?guī)硪黄獰o限循環(huán)輪播圖之運動框架(原生JS實現)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • js實現數據導出為EXCEL(支持大量數據導出)

    js實現數據導出為EXCEL(支持大量數據導出)

    這篇文章主要為大家詳細介紹了js實現數據導出為EXCEL,支持大量數據導出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JS畫5角星方法介紹

    JS畫5角星方法介紹

    5角星想必大家并不陌生吧,在本文大家將會學習到使用JS畫5角星,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-09-09
  • 小程序實現分頁查詢列表的模板

    小程序實現分頁查詢列表的模板

    這篇文章主要為大家詳細介紹了小程序實現分頁查詢列表的模板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 解決canvas畫布使用fillRect()時高度出現雙倍效果的問題

    解決canvas畫布使用fillRect()時高度出現雙倍效果的問題

    下面小編就為大家?guī)硪黄鉀Qcanvas畫布使用fillRect()時高度出現雙倍效果的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論