public async Task <IEnumerable <FileSafeResult> > UploadMultipleFiles(HttpRequestMessage request)
        {
            // MultipartFormDataStreamProvider reads form data only after file processing
            // so we have to put files to the temporary folder firstly
            var tempFolder     = PathProcessor.CreateFolder(Guid.NewGuid().ToString());
            var uploadProvider = new MultipartFormDataStreamProviderSafe(tempFolder);
            await request.Content.ReadAsMultipartAsync(uploadProvider);

            // and now we can move files to the "idUpload" folder
            var idUpload       = uploadProvider.FormData["idUpload"];
            var idUploadFolder = PathProcessor.CreateFolder(idUpload);

            return(uploadProvider.FileData.Select(file => MoveFile(idUploadFolder, idUpload, file)));
        }
        private async Task <IEnumerable <FileSafeResult> > Upload(HttpRequestMessage request, string folder)
        {
            var pathProcessor  = new PathProcessor(folder);
            var uploadProvider = new MultipartFormDataStreamProviderSafe(pathProcessor.SourceFolder);
            await request.Content.ReadAsMultipartAsync(uploadProvider);

            var idUpload = uploadProvider.FormData["idUpload"];

            return
                (from fileData in uploadProvider.FileData
                 let localFileName = fileData.LocalFileName
                                     select new FileSafeResult(localFileName)
            {
                id = folder,
                FileName = Path.GetFileName(localFileName),
                idUpload = idUpload,
            });
        }