upgrade uploading files (images) #TODO upload progress bar

develop
TBS093A 2020-08-10 19:51:53 +02:00
parent 5942d09ca9
commit 64e5cafb7b
1 changed files with 31 additions and 5 deletions

View File

@ -14,7 +14,8 @@ const AlbumCreate = ({
const [message, setMessage] = useState('') const [message, setMessage] = useState('')
const [image, setImage] = useState('') const [image, setImage] = useState('')
const [imageBlob, setImageBlob] = useState('Drop/Click for upload album image...') const [imageInfo, setImageInfo] = useState('Drop/Click\nfor upload album image...')
const [progress, setProgress] = useState('')
const titleInput = React.createRef() const titleInput = React.createRef()
const descriptionInput = React.createRef() const descriptionInput = React.createRef()
@ -86,7 +87,7 @@ const AlbumCreate = ({
setConsoleHistory( consoleHistory + message + '\n' ) setConsoleHistory( consoleHistory + message + '\n' )
setComponentVisible( false ) setComponentVisible( false )
setImage('') setImage('')
setImageBlob('Drop/Click for upload album image...') setImageInfo('Drop/Click\nfor upload album image...')
setMessage('') setMessage('')
} }
} }
@ -103,7 +104,8 @@ const AlbumCreate = ({
event.preventDefault() event.preventDefault()
let data = event.target.files[0] let data = event.target.files[0]
setImage( await toBase64( data ) ) setImage( await toBase64( data ) )
setImageBlob( data.name ) uploadListener( data )
setImageInfos(data.name, data.size)
} }
const onLoadFileDrop = async ( event ) => { const onLoadFileDrop = async ( event ) => {
@ -111,7 +113,30 @@ const AlbumCreate = ({
event.persist() event.persist()
let data = event.dataTransfer.files[0] let data = event.dataTransfer.files[0]
setImage( await toBase64( data ) ) setImage( await toBase64( data ) )
setImageBlob( 'name: "' + data.name + '"\nsize: ' + (Math.round(data.size / 100 + 'e-2') / 100 ) + ' MB' ) uploadListener( data )
setImageInfos(data.name, data.size)
}
const uploadListener = async ( data ) => {
let progress = new Response(data).arrayBuffer()
console.log(progress)
await uploadProgressBar( progress, data.size )
}
const uploadProgressBar = async ( progress, size ) => {
let percent = progress / size
setProgress('upload image [____________________]')
setProgress( progress + '#' + percent)
}
const setImageInfos = (name, size) => {
setImageInfo(
'name: "'
+ name
+ '"\nsize: '
+ (Math.round(size / 100 + 'e-2') / 100 )
+ ' MB'
)
} }
return ( return (
@ -133,7 +158,7 @@ const AlbumCreate = ({
ref={ descriptionInput } ref={ descriptionInput }
/> <br /> /> <br />
<pre style={ {marginTop: '35px', marginLeft: '40px'} }> <pre style={ {marginTop: '35px', marginLeft: '40px'} }>
{ imageBlob } { imageInfo }
</pre> </pre>
<input style={ {marginTop: '-55px'} } <input style={ {marginTop: '-55px'} }
id='imageAlbumInput' id='imageAlbumInput'
@ -142,6 +167,7 @@ const AlbumCreate = ({
autoComplete='off' autoComplete='off'
onChange={ event => onLoadFile(event) } onChange={ event => onLoadFile(event) }
/> <br /> /> <br />
{ progress }
<button type='submit' /> <button type='submit' />
</form> </form>
</div> </div>