ekantin

Upload file

Jun 28th, 2018
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import Dropzone from 'react-dropzone';
  4. import axios from 'axios';
  5. import aws from 'aws-sdk';
  6. import { withStyles } from 'material-ui';
  7. import dashboardStyle from 'assets/jss/material-dashboard-react/dashboardStyle';
  8. class Dashboard extends React.Component {
  9.     state = {
  10.         value: 0
  11.     };
  12.  
  13.     uploadFile = files => {
  14.         const file = files[0];
  15.  
  16.         aws.config.update({
  17.             accessKeyId: process.env.REACT_APP_ACCESS_KEY_ID,
  18.             secretAccessKey: process.env.REACT_APP_SECRET_ACCESS_KEY
  19.         });
  20.  
  21.         const s3 = new aws.S3();
  22.         const params = {
  23.             Bucket: process.env.REACT_APP_BUCKET_NAME_FILE_CSV,
  24.             Key: file.name,
  25.             Expires: 60,
  26.             ContentType: file.type
  27.         };
  28.  
  29.         s3.getSignedUrl('putObject', params, function(err, signUrl) {
  30.             if (err) {
  31.                 console.log('ERROR BRO : ', err);
  32.                 return err;
  33.             } else {
  34.                 console.log('URL : ', signUrl);
  35.                 const instance = axios.create();
  36.  
  37.                 instance
  38.                     .put(signUrl, file, { headers: { 'Content-Type': file.type } })
  39.                     .then(res => console.log('RESULT: ', res))
  40.                     .catch(err => console.log('ERROR: ', err));
  41.  
  42.                 return signUrl;
  43.             }
  44.         });
  45.     };
  46.  
  47.     render() {
  48.         return (
  49.             <div>
  50.                 <form>
  51.                     Upload data kantin
  52.                     <Dropzone onDrop={this.uploadFile.bind(this)} />
  53.                 </form>
  54.             </div>
  55.         );
  56.     }
  57. }
  58.  
  59. Dashboard.propTypes = {
  60.     classes: PropTypes.object.isRequired
  61. };
  62.  
  63. export default withStyles(dashboardStyle)(Dashboard);
Advertisement
Add Comment
Please, Sign In to add comment