Advertisement
josaho

Untitled

Jun 29th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. import React, { Component, PropTypes, } from 'react';
  2. import { reduxForm, } from 'redux-form';
  3.  
  4. import Dropzone from 'react-dropzone';
  5.  
  6. export const fields = ['files',];
  7.  
  8. @reduxForm({
  9. form: 'simple',
  10. fields,
  11. })
  12. export default class SimpleForm extends Component {
  13.  
  14. static propTypes = {
  15. fields: PropTypes.object.isRequired,
  16. handleSubmit: PropTypes.func.isRequired,
  17. resetForm: PropTypes.func.isRequired,
  18. submitting: PropTypes.bool.isRequired,
  19. };
  20.  
  21. constructor() {
  22. super()
  23.  
  24. this.state = {
  25. files: []
  26. }
  27. }
  28.  
  29. handleSubmit(data) {
  30. var body = new FormData();
  31. // body.append('files[0]', data.files[0])
  32. for (let i = 0; i < data.files.length; i++) {
  33. const file = data.files[i]
  34. body.append(`files[${i}]`, data.files[i])
  35.  
  36. let previews = this.state.files
  37. previews.push(data.files[i])
  38. this.setState({
  39. files: previews
  40. })
  41. }
  42.  
  43. // Object.keys(data).forEach(( key ) => {
  44. // // console.log(key)
  45. // // console.log(data[key])
  46. // Object.keys(data[key]).forEach((k) => {
  47. // const file = data[key][k]
  48. // console.log('---> file:', file)
  49. // console.log('---> state:', this.state)
  50. // this.setState({
  51. // file: file
  52. // })
  53. // })
  54. // body.append(key, data[ key ]);
  55. // });
  56. //
  57. // console.log(data);
  58. console.log('----> body:', body);
  59. console.log('----> data:', data);
  60.  
  61. fetch(`http://api.mychilds.life/v1/file/upload?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2FwaS5teWNoaWxkcy5saWZlXC92MVwvYXV0aFwvbG9naW4iLCJpYXQiOjE0NjcwMTc1NTksImV4cCI6MTQ2NzI3Njc1OSwibmJmIjoxNDY3MDE3NTU5LCJqdGkiOiIyMGE5OTczYjkwMzliNDhiYjY4MDY0NzExOGU3NmM4NSJ9.c7aMnwNEbJB7fOZZ6CRszuQOQFI2UAeclRJmBU-VDuA`, {
  62. method: 'POST',
  63. body: body
  64. })
  65. .then(res => res.json())
  66. .then(res => console.log(res))
  67. .catch(err => console.log(err));
  68. }
  69.  
  70. displayPreview() {
  71. console.log('---> display preview:', this.state)
  72. if (this.state.files) {
  73. return (
  74. <div>
  75. {this.state.files.map((file) => {
  76. return <img src={file.preview} />
  77. })}
  78. </div>
  79. )
  80. } else {
  81. return (
  82. <span />
  83. )
  84. }
  85. }
  86.  
  87. render() {
  88. const {
  89. fields: { files, },
  90. handleSubmit,
  91. resetForm,
  92. submitting,
  93. } = this.props;
  94. return (
  95. <form onSubmit={ handleSubmit }>
  96. <div>
  97. <label>Files</label>
  98. <div>
  99. <Dropzone
  100. { ...files }
  101. onDrop={ ( filesToUpload, e ) => {
  102. files.onChange(filesToUpload)
  103. this.handleSubmit(::this.handleSubmit)
  104. }
  105. }
  106. >
  107. <div>Try dropping some files here, or click to select files to upload.</div>
  108. </Dropzone>
  109. </div>
  110. </div>
  111. <div>
  112. <button
  113. disabled={ submitting }
  114. onClick={ handleSubmit(::this.handleSubmit) }
  115. >
  116. { submitting ? <i/> : <i/> } Submit
  117. </button>
  118. <button
  119. disabled={ submitting }
  120. onClick={ resetForm }
  121. >
  122. Clear Values
  123. </button>
  124. </div>
  125. {this.displayPreview()}
  126. </form>
  127. );
  128. }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement