- let promise = new Promise( (resolve, reject) => {\r
-\r
- let stream = new Readable();\r
- stream.push(file.buffer);\r
- stream.push(null);\r
-\r
- this.FileModel.write(\r
- {\r
- filename: file.originalname,\r
- contentType: file.mimeType\r
- },\r
- stream,\r
- function (error, savedAttachment) {\r
- if (error) {\r
- logger.error(error);\r
- reject(error);\r
- } else {\r
- stream.destroy();\r
- resolve(savedAttachment);\r
- }\r
- }\r
- );\r
+ let promise = new Promise(async (resolve, reject) => {\r
+\r
+ let exists, filename, blob, blockBlob;\r
+ // Creates the file id and checks that there isn't already a file with that name\r
+ do {\r
+\r
+ filename = ObjectID().toString();\r
+ \r
+ blob = BlobURL.fromContainerURL(this.options.app.get('azureStorageContainerUrl'), filename);\r
+ blockBlob = BlockBlobURL.fromBlobURL(blob);\r
+ exists = await blockBlob.getProperties().catch(err => {\r
+ if(err.statusCode == 404){\r
+ exists = false;\r
+ }\r
+ });\r
+\r
+ } while (exists);\r
+ \r
+ blockBlob.upload(Aborter.none, file.buffer.toString(), file.size).then(\r
+ result => {\r
+ result._id = filename;\r
+ resolve(result);\r
+ }\r
+ ).catch(\r
+ error => {\r
+ reject(error);\r
+ }\r
+ );\r