public async Task <ActionResult> Create(FormCollection form)
        {
            FirmwareUpgradeViewModel vm = new FirmwareUpgradeViewModel();

            if (TryUpdateModel(vm))
            {
                byte[] upgradeBytes = null;
                using (BinaryReader r = new BinaryReader(vm.UploadedFile.InputStream))
                {
                    upgradeBytes = r.ReadBytes(vm.UploadedFile.ContentLength);
                }

                // Calculate MD5 of the file.
                string fileMD5 = HexFileUtility.GetMd5Hash(upgradeBytes);

                FirmwareUpgrade upgrade = new FirmwareUpgrade
                {
                    Name     = vm.Name,
                    FileHash = fileMD5,
                    FileData = upgradeBytes,
                };
                upgrade = await upgradesService.CreateFirmwareUpgrade(upgrade);

                if (upgrade == null)
                {
                    ModelState.AddModelError("UpgradeCreationFailed", "Failed to create upgrade. Does an upgrade with this name already exist?");
                    return(View(vm));
                }
            }

            return(RedirectToAction("Index"));
        }