ASP.NET Core,Azure存储控制器



我有一个非常新手的问题。

我正在关注这个文档"Azure Blob存储客户端库v12 for.NET"-https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet

当我在控制台和Azure存储上进行测试时,它是有效的。

但我想知道我是否可以用建议的"Main"方法制作一个控制器?因为我希望这些获取和发布到服务器的操作在用户输入从前端更改时启动。

这就是Program.cs内部的Main方法基于文档的样子

static async Task Main()
{
Console.WriteLine("Azure Blob storage v12 - .NET quickstart samplen");
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:nt {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 tont{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:nt {0}n", blobClient.Uri);
// Open the file and upload its data
using FileStream uploadFileStream = File.OpenRead(localFilePath);
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close();

}

或者这是不允许的?

谢谢你帮助这个超级新手!

例如,在我的HomeController中,我可以使用与帖子相关的函数吗?

是的,你可以实现。

您可以使用poster在本地发送post请求来测试它。记住删除SSL以进行Web服务器设置。

此外,将public void Post更改为public async Task Post,并删除代码中的using

FileStream uploadFileStream = File.OpenRead(localFilePath);
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close()

最新更新