網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
使用react-file-viewer
1.npm install react-file-viewer
2.在組建中引入import FileViewer from 'react-file-viewer';
3.使用:
<FileViewer
fileType={this.state.imgFlieType}//文件類型
filePath={this.state.details.dragger}//文件地址
onError={console.log('錯(cuò)誤信息')}
errorComponent={console.log('發(fā)生錯(cuò)誤')}//[可選]:發(fā)生錯(cuò)誤時(shí)呈現(xiàn)的組件,而不是react-file-
viewer隨附的默認(rèn)錯(cuò)誤組件
unsupportedComponent={console.log('不支持')} //[可選]:在不支持文件格式的情況下呈現(xiàn)的組件
/>
注意:
在使用插件時(shí)出現(xiàn)如下報(bào)錯(cuò)時(shí):
原因:react-file-viewer只支持文件網(wǎng)絡(luò)地址,本地地址可能不支持
解決辦法:需要把本地地址換成網(wǎng)絡(luò)地址進(jìn)行測(cè)試
react-file-viewer預(yù)覽本地文件
代碼
import React, {Component} from 'react';
import FileViewer from 'react-file-viewer';
export default class MyComponent extends Component {
state = {
fileLocalUrl: null,
type: ''
}
changeFile(e) {
let file = e.currentTarget.files[0]
let fileName = file.name
console.log(file)
window.URL = window.URL || window.webkitURL;
this.setState({
fileLocalUrl: window.URL.createObjectURL(file),
type: fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)
})
}
render() {
const {fileLocalUrl, type} = this.state
return (
<div>
{
fileLocalUrl && <FileViewer
fileType={type}
filePath={fileLocalUrl}
errorComponent={<div>錯(cuò)誤</div>}
onError={this.onError}/>
}
<input type="file" onChange={e => this.changeFile(e)}/>
</div>
);
}
}
能遇到這個(gè)問題的大部分都是直接把file丟進(jìn)組件,導(dǎo)致報(bào)錯(cuò)
解決思路
window.URL.createObjectURL,創(chuàng)建文件對(duì)象的URL,將URL丟進(jìn)組件即可
在移除文件對(duì)象URL的時(shí)候記得調(diào)用URL.revokeObjectURL(url),清理內(nèi)存,否則會(huì)一直存在內(nèi)存中,詳見官網(wǎng)
https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL
對(duì)于大文件可能會(huì)導(dǎo)致內(nèi)存崩潰,切記不要預(yù)覽大文件,最好限制在30M以內(nèi)
原文鏈接:https://blog.csdn.net/qq_52886072/article/details/122622404
相關(guān)推薦
- 2022-08-31 ASP.NET?Core中的對(duì)象池介紹_實(shí)用技巧
- 2022-04-21 R語(yǔ)言繪制帶ErrorBar的分組條形圖代碼的分享_R語(yǔ)言
- 2022-08-01 MongoDB基礎(chǔ)之集合操作_MongoDB
- 2022-04-01 用C語(yǔ)言實(shí)現(xiàn)推箱子游戲?qū)嵗齙C 語(yǔ)言
- 2022-07-31 python虛擬機(jī)解釋器及運(yùn)行過程_python
- 2022-10-03 React實(shí)現(xiàn)監(jiān)聽粘貼事件并獲取粘貼板中的截圖_React
- 2022-04-22 Number精度超了如何解決
- 2022-05-20 ElasticSearch 7.X系列之:Centos7中常見啟動(dòng)報(bào)錯(cuò)以及解決方法
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支