Skip to content

Commit 65c974c

Browse files
authored
Merge pull request #459 from siata13/bugs/444
FilePicker: Add support for IE11
2 parents 3df2b77 + 472a798 commit 65c974c

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

src/common/utilities/GeneralHelper.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,24 @@ export class GeneralHelper {
232232
}
233233
}
234234

235+
/**
236+
* To support IE11 that has no support for File constructor
237+
* @param blob
238+
*/
239+
public static getFileFromBlob(blob :Blob, fileName: string) : File {
240+
let result : any = null;
241+
// IE 11 foesn't support File API, create a workaround to return Blob with fileName assigned.
242+
try {
243+
result = new File([blob], fileName);
244+
}
245+
catch (ieErr) {
246+
result = blob;
247+
result.fileName = fileName;
248+
}
249+
250+
return result;
251+
}
252+
235253
public static formatBytes(bytes, decimals) {
236254
if (bytes == 0) {
237255
return strings.EmptyFileSize;

src/services/FileBrowserService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ export class FileBrowserService {
9292
}
9393

9494
// Return file created from blob
95-
const blob : Blob = await fileDownloadResult.blob();
96-
return new File([blob], fileName);
95+
const blob: Blob = await fileDownloadResult.blob();
96+
return GeneralHelper.getFileFromBlob(blob, fileName);
9797
} catch (err) {
9898
console.error(`[FileBrowserService.fetchFileContent] Err='${err.message}'`);
9999
return null;

src/services/FilesSearchService.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { SPHttpClient } from "@microsoft/sp-http";
33
import { ISearchResult, BingQuerySearchParams, IRecentFile } from "./FilesSearchService.types";
44
import { find } from "office-ui-fabric-react/lib/Utilities";
55
import { ExtensionContext } from "@microsoft/sp-extension-base";
6+
import { GeneralHelper } from "../common/utilities";
67

78
/**
89
* Maximum file size when searching
@@ -181,7 +182,8 @@ export class FilesSearchService {
181182

182183
// Return file created from blob
183184
const blob: Blob = await fileDownloadResult.blob();
184-
return new File([blob], fileName);
185+
// Retrieve file from blob - method supports IE11
186+
return GeneralHelper.getFileFromBlob(blob, fileName);
185187
} catch (err) {
186188
console.error(`[FileSearchService.fetchFileContent] Err='${err.message}'`);
187189
return null;
@@ -204,7 +206,7 @@ export class FilesSearchService {
204206

205207
// Return file created from blob
206208
const blob: Blob = await fileDownloadResult.blob();
207-
return new File([blob], fileName);
209+
return GeneralHelper.getFileFromBlob(blob, fileName);
208210
} catch (err) {
209211
console.error(`[FileSearchService.fetchFileContent] Err='${err.message}'`);
210212
return null;

src/services/OneDriveService.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { SPHttpClient } from '@microsoft/sp-http';
55
import { FileBrowserService } from "./FileBrowserService";
66
import { FilesQueryResult } from "./FileBrowserService.types";
77
import { ExtensionContext } from "@microsoft/sp-extension-base";
8+
import { GeneralHelper } from "../Utilities";
89

910
export class OneDriveService extends FileBrowserService {
1011
protected oneDrivePersonalUrl: string;
@@ -77,8 +78,8 @@ export class OneDriveService extends FileBrowserService {
7778
}
7879

7980
// Return file created from blob
80-
const blob : Blob = await fileDownloadResult.blob();
81-
return new File([blob], fileName);
81+
const blob: Blob = await fileDownloadResult.blob();
82+
return GeneralHelper.getFileFromBlob(blob, fileName);
8283
} catch (err) {
8384
console.error(`[OneDriveService.fetchFileContent] Err='${err.message}'`);
8485
return null;

0 commit comments

Comments
 (0)