簡體   English   中英

React Image上傳Dropzone

[英]React Image upload Dropzone

我有點麻煩。 我正在使用react編寫圖像上傳器,我創建了一個上傳組件,我希望在將其發送到后端並將其上傳到cdn之前顯示預覽圖像。 但是,我無法從州獲得預覽。 沒有錯誤,它似乎沒有從州獲得預覽道具。 很想知道你的意見。

赫雷斯是我的組成部分

 import React, { PropTypes } from 'react' var Dropzone = require('react-dropzone'); import './uploader.scss' class Uploader extends React.Component { constructor(props){ super(props) this.state = { files: [] }; } onDrop(files) { console.log(files); let filename = files[0].name; let preview = files[0].preview; this.setState({ files: files, name: filename, preview: preview }); } render() { return ( <div className = 'dropzoneContainer' > <Dropzone ref={(node) => { this.dropzone = node; }} onDrop={this.onDrop} className= 'zone' multiple={false}> <div className = 'dropzone' >Upload Image</div> {this.state.files.preview ? <div> <img src={this.state.preview} /> </div> : null} </Dropzone> </div> ); } } export default Uploader 

我正在使用這個反應拖放庫http://okonet.ru/react-dropzone/

謝謝

這是一段代碼:

{this.state.files.preview ? <div>
  <img src={this.state.preview} />
</div> : null}

你將this.state.files.preview更改為this.state.preview ,你應該沒問題。

希望這可以幫助!

嘗試

files.length == 0?
<Dropzone onDrop={this.onDrop.bind(this)}>
<p>Try dropping some files here, or click to select files to upload.
</p>
</Dropzone>
:<div>{files.map(f => <img src={f.preview} />)}</div> 

您可以使用React Dropzone Uploader ,它可以為您提供開箱即用的文件預覽,還可以為您處理上傳。

import 'react-dropzone-uploader/dist/styles.css'
import Dropzone from 'react-dropzone-uploader'

const Uploader = () => {  
  return (
    <Dropzone
      getUploadParams={() => ({ url: 'https://httpbin.org/post' })} // specify upload params and url for your files
      onChangeStatus={({ meta, file }, status) => { console.log(status, meta, file) }}
      onSubmit={(files) => { console.log(files.map(f => f.meta)) }}
      accept="image/*,audio/*,video/*"
    />
  )
}

上傳有進度指示器,可以取消或重新啟動。 用戶界面完全可以自定義。

完全披露:我寫了這個庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM