From 0e17d5563368c56c619fe0cad9440a707b6df3e6 Mon Sep 17 00:00:00 2001 From: Chris Moyer Date: Mon, 6 Mar 2017 17:30:18 -0500 Subject: [PATCH 1/3] Adds some Fixes for AWS Support. AWS Requires any additional parameters to be specified BEFORE Files. This also adds the ability to specify a {{file_name}} template in any additional parameters to allow adding the filename to additional parameters. For example, you can now specify: additionalParameter: { key: "path/to/uploads/{{file_name}}" } --- src/file-upload/file-uploader.class.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/file-upload/file-uploader.class.ts b/src/file-upload/file-uploader.class.ts index 5f17770..838cbf4 100644 --- a/src/file-upload/file-uploader.class.ts +++ b/src/file-upload/file-uploader.class.ts @@ -307,13 +307,20 @@ export class FileUploader { sendable = new FormData(); this._onBuildItemForm(item, sendable); - sendable.append(item.alias, item._file, item.file.name); + // For AWS, Additional Parameters must come BEFORE Files if (this.options.additionalParameter !== undefined) { Object.keys(this.options.additionalParameter).forEach((key:string) => { - sendable.append(key, this.options.additionalParameter[key]); + let paramVal = this.options.additionalParameter[key]; + // Allow an additional parameter to include the filename + if (paramVal.indexOf('{{file_name}}') >= 0) { + paramVal.replace('{{file_name}}', item.file.name); + } + sendable.append(key, paramVal); }); } + + sendable.append(item.alias, item._file, item.file.name); } else { sendable = item._file; } From 8b36c892d5d865f645d8d8b3858176a6bd5fb177 Mon Sep 17 00:00:00 2001 From: Chris Moyer Date: Mon, 6 Mar 2017 17:41:47 -0500 Subject: [PATCH 2/3] Fixes {{file_name}} template --- src/file-upload/file-uploader.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file-upload/file-uploader.class.ts b/src/file-upload/file-uploader.class.ts index 838cbf4..7d7d9ff 100644 --- a/src/file-upload/file-uploader.class.ts +++ b/src/file-upload/file-uploader.class.ts @@ -314,7 +314,7 @@ export class FileUploader { let paramVal = this.options.additionalParameter[key]; // Allow an additional parameter to include the filename if (paramVal.indexOf('{{file_name}}') >= 0) { - paramVal.replace('{{file_name}}', item.file.name); + paramVal = paramVal.replace('{{file_name}}', item.file.name); } sendable.append(key, paramVal); }); From a333c59f824a8e76cfa11c3438d56d47e86ec3dd Mon Sep 17 00:00:00 2001 From: Chris Moyer Date: Tue, 7 Mar 2017 09:59:55 -0500 Subject: [PATCH 3/3] Make sure it's a string before trying to do indexOf --- src/file-upload/file-uploader.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file-upload/file-uploader.class.ts b/src/file-upload/file-uploader.class.ts index 7d7d9ff..5311d74 100644 --- a/src/file-upload/file-uploader.class.ts +++ b/src/file-upload/file-uploader.class.ts @@ -313,7 +313,7 @@ export class FileUploader { Object.keys(this.options.additionalParameter).forEach((key:string) => { let paramVal = this.options.additionalParameter[key]; // Allow an additional parameter to include the filename - if (paramVal.indexOf('{{file_name}}') >= 0) { + if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0) { paramVal = paramVal.replace('{{file_name}}', item.file.name); } sendable.append(key, paramVal);