ASP. NET Core, Azure контроллер хранения - PullRequest
0 голосов
/ 29 марта 2020

У меня очень новый вопрос ie.

Я следую этой документации "Azure Клиентская библиотека хранилища BLOB-объектов v12 для. NET" - https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet

Когда я тестировал на своей консоли и на моем Azure хранилище, оно работает.

Но мне было интересно, смогу ли я сделать контроллер из предложенного метода 'Main'? Потому что я хочу, чтобы их получение и публикация на сервере инициировались при изменении пользовательского ввода со стороны внешнего интерфейса.

Вот как выглядит метод Main внутри Program.cs на основе документов

        static async Task Main()
        {
            Console.WriteLine("Azure Blob storage v12 - .NET quickstart sample\n");

            string connectionString = Environment.GetEnvironmentVariable("My_CONNECTION_STRING");


            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

            string containerName = "quickstartblobs" + Guid.NewGuid().ToString();

            BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);


            string localPath = "./data/";
            string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
            string localFilePath = Path.Combine(localPath, fileName);

            // Write text to the file
            await File.WriteAllTextAsync(localFilePath, "Hello, World!");

            // Get a reference to a blob
            BlobClient blobClient = containerClient.GetBlobClient(fileName);

            Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);

            // Open the file and upload its data
            using FileStream uploadFileStream = File.OpenRead(localFilePath);
            await blobClient.UploadAsync(uploadFileStream, true);
            uploadFileStream.Close();

            Console.WriteLine("Listing blobs...");

            // List all blobs in the container
            await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
            {
                Console.WriteLine("\t" + blobItem.Name);
            }
            Console.Write("Press any key to begin clean up");
            Console.ReadLine();

            string downloadFilePath = localFilePath.Replace(".txt", "DOWNLOAD.txt");

            Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);

            // Download the blob's contents and save it to a file
            BlobDownloadInfo download = await blobClient.DownloadAsync();

            using (FileStream downloadFileStream = File.OpenWrite(downloadFilePath))
            {
                await download.Content.CopyToAsync(downloadFileStream);
                downloadFileStream.Close();
            }
        }

Так, например, в моем HomeController я могу использовать функции, связанные с сообщениями, как

            [HttpPost]
            public void Post([FromBody]string value)
            {
                //Create a unique name for the container
                string containerName = "filedata" + Guid.NewGuid().ToString();

                // Create the container and return a container client object
                BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);

                // Create a local file in the ./data/ directory for uploading and downloading
                string localPath = "./data/";
                string fileName = "textfile" + Guid.NewGuid().ToString() + ".txt";
                string localFilePath = Path.Combine(localPath, fileName);

            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

            // Get a reference to a blob
            BlobClient blobClient = containerClient.GetBlobClient(fileName);

            Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);

            // Open the file and upload its data
            using FileStream uploadFileStream = File.OpenRead(localFilePath);
            await blobClient.UploadAsync(uploadFileStream, true);
            uploadFileStream.Close();


            }

Или это не ... go?

Спасибо за помощь в этом супер Newb ie!

1 Ответ

1 голос
/ 30 марта 2020

Так, например, в моем HomeController Могу ли я использовать функции, связанные с публикацией или это не ... 1016 *?

Да, вы можете этого достичь.

Вы можете использовать почтальон для отправки post запроса локально, чтобы проверить его. Не забудьте удалить SSL для настройки веб-сервера.

Кроме того, измените public void Post на public async Task Post и удалите using в коде:

 FileStream uploadFileStream = File.OpenRead(localFilePath);
 await blobClient.UploadAsync(uploadFileStream, true);
 uploadFileStream.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...