Skip to content

Commit cd80d5a

Browse files
committed
Fixing #4 and Minor error handlings
1 parent c9b139f commit cd80d5a

File tree

4 files changed

+36
-17
lines changed

4 files changed

+36
-17
lines changed

package-lock.json

Lines changed: 24 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"@types/aws-sdk": "^2.7.0",
5252
"@types/crypto-js": "^4.0.2",
5353
"aws-sdk": "^2.993.0",
54+
"buffer": "^6.0.3",
5455
"crypto-js": "^4.1.1",
5556
"short-uuid": "^4.2.0"
5657
},

src/Policy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { dateISOString, dateYMD, xAmzDate } from './Date';
22
import { IConfig, Policy as PolicyType } from './types';
3+
import { Buffer } from 'buffer';
34

45
export default class Policy {
56
public static getPolicy(config: IConfig): string {
@@ -23,7 +24,6 @@ export default class Policy {
2324
};
2425
};
2526
// Returns a base64 policy;
26-
// tslint:disable-next-line: deprecation
27-
return new Buffer(JSON.stringify(policy())).toString('base64').replace(/\n|\r/, '');
27+
return Buffer.from(JSON.stringify(policy())).toString('base64').replace(/\n|\r/, '');
2828
}
2929
}

src/react-aws-s3.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ class ReactS3Client {
1414
}
1515
public async uploadFile(file: File, newFileName?: string): Promise<UploadResponse> {
1616
throwUploadError(this.config, file);
17-
let fileExtension: string;
17+
let fileExtension: string = '';
1818
const fd = new FormData();
1919

20-
if (file.type == null) {
21-
fileExtension = '';
22-
} else {
23-
fileExtension = file.type.split('/')[1];
20+
if (file.type != null) {
21+
fileExtension = file.type.split('/').pop() || '';
2422
}
2523

26-
const fileName = `${newFileName || shortId.generate()}.${fileExtension}`;
27-
const key = `${this.config.dirName ? this.config.dirName + '/' : ''}${fileName}`;
24+
const fileName = `${newFileName || shortId.generate()}${fileExtension && ('.' + fileExtension)}`;
25+
// remove duplicate forward slashes
26+
const dirName = (this.config.dirName ? this.config.dirName + '/' : '').replace(/([^:]\/)\/+/g, '$1')
27+
const key = `${dirName}${fileName}`;
2828
const url: string = GetUrl(this.config);
2929
fd.append('key', key);
3030
fd.append('acl', 'public-read');
@@ -43,8 +43,8 @@ class ReactS3Client {
4343
if (!data.ok) return Promise.reject(data);
4444
return Promise.resolve({
4545
bucket: this.config.bucketName,
46-
key: `${this.config.dirName ? this.config.dirName + '/' : ''}${fileName}`,
47-
location: `${url}/${this.config.dirName ? this.config.dirName + '/' : ''}${fileName}`,
46+
key,
47+
location: `${url}/${key}`,
4848
status: data.status,
4949
});
5050
}

0 commit comments

Comments
 (0)