@@ -18,22 +18,12 @@ type CSVFileImportProps = {
18
18
export default function CSVFileImport ( { url, title} : CSVFileImportProps ) {
19
19
const classes = useStyles ( ) ;
20
20
const [ file , setFile ] = useState < any > ( ) ;
21
- const [ uploadUrl , setUploadUrl ] = useState < any > ( ) ;
22
-
23
- const createFile = ( file : any ) => {
24
- let reader = new FileReader ( )
25
- reader . onload = ( e : any ) => {
26
- console . log ( e . target . result ) ;
27
- setFile ( e . target . result ) ;
28
- }
29
- reader . readAsDataURL ( file )
30
- } ;
31
21
32
22
const onFileChange = ( e : any ) => {
33
23
console . log ( e ) ;
34
24
let files = e . target . files || e . dataTransfer . files
35
25
if ( ! files . length ) return
36
- createFile ( files [ 0 ] )
26
+ setFile ( files . item ( 0 ) ) ;
37
27
} ;
38
28
39
29
const removeFile = ( ) => {
@@ -44,24 +34,18 @@ export default function CSVFileImport({url, title}: CSVFileImportProps) {
44
34
// Get the presigned URL
45
35
const response = await axios ( {
46
36
method : 'GET' ,
47
- url
37
+ url,
38
+ params : {
39
+ name : encodeURIComponent ( file . name )
40
+ }
48
41
} )
49
- console . log ( 'Response: ' , response . data )
50
- console . log ( 'Uploading: ' , file )
51
- let binary = atob ( file . split ( ',' ) [ 1 ] )
52
- let array = [ ]
53
- for ( var i = 0 ; i < binary . length ; i ++ ) {
54
- array . push ( binary . charCodeAt ( i ) )
55
- }
56
- let blobData = new Blob ( [ new Uint8Array ( array ) ] , { type : 'text/plain' } )
57
- console . log ( 'Uploading to: ' , response . data . uploadURL )
58
- const result = await fetch ( response . data . uploadURL , {
42
+ console . log ( 'File to upload: ' , file . name )
43
+ console . log ( 'Uploading to: ' , response . data )
44
+ const result = await fetch ( response . data , {
59
45
method : 'PUT' ,
60
- body : blobData
46
+ body : file
61
47
} )
62
48
console . log ( 'Result: ' , result )
63
- // Final URL for the user doesn't need the query string params
64
- setUploadUrl ( response . data . uploadURL . split ( '?' ) [ 0 ] ) ;
65
49
setFile ( '' ) ;
66
50
}
67
51
;
@@ -75,8 +59,8 @@ export default function CSVFileImport({url, title}: CSVFileImportProps) {
75
59
< input type = "file" onChange = { onFileChange } />
76
60
) : (
77
61
< div >
78
- { ! uploadUrl && < button onClick = { removeFile } > Remove file</ button > }
79
- { ! uploadUrl && < button onClick = { uploadFile } > Upload file</ button > }
62
+ < button onClick = { removeFile } > Remove file</ button >
63
+ < button onClick = { uploadFile } > Upload file</ button >
80
64
</ div >
81
65
) }
82
66
</ div >
0 commit comments