Ejemplo n.º 1
0
        //public IActionResult Create(CreateViewModel model)


        public async Task <IActionResult> Create(IFormFile files, CreateViewModel model)
        //=======================================================================
        //--- azurowe rozwiazanie ---
        {
            string blobstorageconnection = _configuration.GetValue <string>("blobstorage");

            byte[] dataFiles;
            // Pobiera konto magazynu z parametrów połączenia =  UseDevelopmentStorage=true;

            //CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(blobstorageconnection);


            // --- tworzenie blob client
            //CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();

            // --- pobiera odwołanie do kontenera
            //CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("filescontainers");


            // --- tworzy kontener jezeli nie istnieje

            //if (await cloudBlobContainer.CreateIfNotExistsAsync())
            //{
            //    await cloudBlobContainer.SetPermissionsAsync(new BlobContainerPermissions
            //    {
            //        PublicAccess = BlobContainerPublicAccessType.Blob
            //    });
            //}

            //BlobContainerPermissions permissions = new BlobContainerPermissions
            //{
            //    PublicAccess = BlobContainerPublicAccessType.Blob
            //};

            string nazwa_bloaba; //dorobilem1

            if (files != null)
            {
                string systemFileName = files.FileName;
                await using (var target = new MemoryStream())
                {
                    files.CopyTo(target);
                    dataFiles = target.ToArray();
                    // files.FileName
                }

                nazwa_bloaba = files.FileName.ToString();  // dorobilem1
            }

            // To również nie powoduje wezwania serwisu; tworzy tylko obiekt lokalny

            //CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(systemFileName);
            //await cloudBlockBlob.UploadFromByteArrayAsync(dataFiles, 0, dataFiles.Length);

            //systemFileName.
            //nazwa_bloaba1 = cloudBlockBlob.Uri.ToString();

            //nazwa_bloaba = files.Name.ToString(); // dorobilem1
            //return View();

            //--- z HomeControler ---
            //=========================================================================
            //{
            if (ModelState.IsValid)
            {
                string uniqueFileName = ProcessUploadedFile(model); // to przerobic na link uri blob.Uri

                Book newBook = new Book
                {
                    Title    = model.Title,
                    Date     = model.Date,
                    ItemType = model.ItemType,
                    // do cover podac link uri blob.Uri
                    //  Cover = uniqueFileName,
                    //Cover = nazwa_bloaba1, // dodalem1 to jest z bloba nazwa
                    Status     = model.Status,
                    AuthorName = model.AuthorName
                };

                var result = await _httpClientProvider.Add(newBook);

                return(RedirectToAction("Details", new { id = result.Id }));
            }

            return(View());
        }