示例#1
0
        private async Task AddToLocalStorage(ConfigFileEntry fileEntry)
        {
            var listOfFiles = await localStorage.GetItemAsync <List <ConfigFileEntry> >("files");

            listOfFiles.Add(fileEntry);
            await localStorage.SetItemAsync("files", listOfFiles);
        }
示例#2
0
        public async Task <bool> UploadFileAsync(Stream fs, string fileName, string algorithm, string key)
        {
            string fileId = null;

            using (var form = new MultipartFormDataContent())
                using (var streamContent = new StreamContent(fs))
                {
                    form.Add(new StringContent(fileName, Encoding.UTF8, "text/plain"), "\"FileName\"");

                    var byteArray = await streamContent.ReadAsByteArrayAsync();

                    TigerHash tigerHasher        = new TigerHash();
                    byte[]    hashed             = tigerHasher.Hash(byteArray, byteArray.Length);
                    string    hashedBase64String = Convert.ToBase64String(hashed);
                    form.Add(new StringContent(hashedBase64String, Encoding.UTF8, "text/plain"), "\"HashValue\"");

                    Console.WriteLine("Encryption left only");

                    byte[] encrypted = await EncryptFile(byteArray, algorithm, key);

                    Stream stream = new MemoryStream(encrypted);
                    var    encryptedStreamContent = new StreamContent(stream);
                    form.Add(encryptedStreamContent, "\"Content\"", fileName);

                    Console.WriteLine("Form ready to post");

                    var response = await this.httpClient.PostAsync("api/Files/", form);

                    encryptedStreamContent.Dispose();
                    if (response.IsSuccessStatusCode)
                    {
                        var responseString = await response.Content.ReadAsStringAsync();

                        var fileObject = JsonConvert.DeserializeObject <FileResult>(responseString);
                        fileId = fileObject.Id.ToString();
                        Console.WriteLine("Posted: " + fileId);
                    }
                }

            if (String.IsNullOrEmpty(fileId))
            {
                return(false);
            }

            // add to localstorage
            ConfigFileEntry fileEntry = new ConfigFileEntry
            {
                Id        = fileId,
                FileName  = fileName,
                Algorithm = algorithm,
                Key       = key
            };

            await AddToLocalStorage(fileEntry);

            return(true);
        }