UploadFile.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import React, {Component} from "react";
  2. import {Button, Form, Input, message, Tabs, Upload} from "antd";
  3. import getCookie from "../../utils/getCookie";
  4. import {InboxOutlined, UsergroupAddOutlined} from "@ant-design/icons";
  5. import {apiUpload, apiUploadFile} from "../../services/API/API";
  6. import {file} from "ant-design-icons";
  7. import ReactFileReader from "react-file-reader";
  8. import './UploadFile.less'
  9. const {Dragger} = Upload;
  10. const {TabPane} = Tabs;
  11. class UploadFile extends Component {
  12. state = {
  13. fileList: [],
  14. files: '',
  15. file_name: ''
  16. }
  17. constructor(props) {
  18. super(props);
  19. if (props.onRef) {
  20. props.onRef(this)
  21. }
  22. }
  23. clickButton = () => {
  24. let e = document.createEvent('MouseEvents');
  25. e.initEvent('click', true, true)
  26. document.getElementById('upload-file-form-button').dispatchEvent(e)
  27. }
  28. handleUploadFile = () => {
  29. const {fileList} = this.state
  30. var formData = new FormData();
  31. fileList.forEach(file => {
  32. formData.append('file', file);
  33. })
  34. formData.append('username', getCookie('username'))
  35. formData.append('token', getCookie('token'))
  36. formData.append('father_folder_id', this.props.fatherFolderId)
  37. // let data = {
  38. // username: getCookie('username'),
  39. // token: getCookie('token'),
  40. // father_folder_id: this.props.fatherFolderId,
  41. // fileList: fileList,
  42. // }
  43. apiUploadFile(formData).then(res => {
  44. if (res.data.code === 200) {
  45. message.success('添加成功');
  46. this.props.cdFolder(this.props.fatherFolderId)
  47. } else {
  48. message.error(res.data.error)
  49. }
  50. })
  51. };
  52. handleUploadEnFile = () => {
  53. let fatherFolderId = this.props.fatherFolderId;
  54. let params = {
  55. username: getCookie('username'),
  56. token: getCookie('token'),
  57. father_folder_id: fatherFolderId,
  58. file_b64: this.state.files,
  59. file_name: this.state.file_name
  60. }
  61. console.log(params)
  62. apiUpload(params).then(res => {
  63. if (res.data.code === 200) {
  64. message.success('上传成功');
  65. this.props.cdFolder(this.props.fatherFolderId)
  66. } else {
  67. message.error(res.data.error)
  68. }
  69. })
  70. };
  71. handleFiles = (files) => {
  72. this.setState({
  73. files: files.base64,
  74. file_name: files.fileList[0].name
  75. })
  76. this.handleUploadEnFile()
  77. this.clickButton()
  78. }
  79. beforeUpload = file => {
  80. this.setState({
  81. fileList: [...this.state.fileList, file]
  82. })
  83. return false
  84. }
  85. render() {
  86. return (
  87. <div className={'UploadFile-div'}>
  88. <Tabs
  89. defaultActiveKey="1"
  90. size={'large'}
  91. animated={true}
  92. centered={true}
  93. tabBarGutter={50}
  94. >
  95. <TabPane
  96. tab='Not Encrypted'
  97. key="1"
  98. style={{padding: "20px 30px 10px"}}>
  99. <Form onFinish={this.handleUploadFile} initialValues={{remember: true}}>
  100. <Form.Item
  101. name="upload"
  102. rules={[{required: true, message: 'Please upload file!'}]}
  103. >
  104. <Dragger
  105. beforeUpload={this.beforeUpload}
  106. name={'upload'}
  107. multiple={false}
  108. maxCount={1}
  109. >
  110. <p className="ant-upload-drag-icon">
  111. <InboxOutlined/>
  112. </p>
  113. <p className="ant-upload-text">Click or drag file to this area to upload</p>
  114. <p className="ant-upload-hint">
  115. Support for a single or bulk upload. Strictly prohibit from uploading company
  116. data or
  117. other
  118. band files
  119. </p>
  120. </Dragger>
  121. </Form.Item>
  122. <Form.Item style={{height: "1px"}}>
  123. <Button size="large" type="primary" htmlType="submit" id="upload-file-form-button"
  124. style={{
  125. width: '100%',
  126. display: 'none',
  127. float: 'bottom',
  128. marginBottom: '100vh'
  129. }}>
  130. Upload
  131. </Button>
  132. </Form.Item>
  133. </Form>
  134. </TabPane>
  135. <TabPane tab="Encrypt" key="2" style={{padding: "20px 30px 0"}}>
  136. <ReactFileReader
  137. base64={true}
  138. multipleFiles={false}
  139. handleFiles={this.handleFiles}
  140. >
  141. <Button size="large" type="primary" htmlType="submit"
  142. style={{width: '100%',}}>
  143. Select File
  144. </Button>
  145. </ReactFileReader>
  146. </TabPane>
  147. </Tabs>
  148. </div>
  149. )
  150. }
  151. }
  152. export default UploadFile;