asp.net-core - ASP.NET Core,Azure 存储控制器
问题描述
我有一个非常新手的问题。
我正在关注此文档“用于 .NET 的 Azure Blob 存储客户端库 v12” - https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet
当我在我的控制台和 Azure 存储上进行测试时,它可以工作。
但我想知道是否可以使用建议的“主要”方法制作控制器?因为我希望当用户输入从前端更改时启动这些获取和发布到服务器的操作。
这是 Program.cs 内部的 Main 方法基于文档的样子
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();
}
或者这是不行的?
感谢您帮助这个超级新手!
解决方案
因此,例如,在我的 HomeController 中,我可以使用与帖子相关的功能吗?或者这是不行的?
是的,你可以实现它。
您可以使用邮递员在本地发送post
请求以进行测试。请记住删除SSL
网络服务器设置。
另外,在代码中public void Post
更改public async Task Post
并删除:using
FileStream uploadFileStream = File.OpenRead(localFilePath);
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close()
推荐阅读
- excel - 在 VLOOKUP 中动态改变矩阵
- python-3.x - 从用户那里获取输入并使用python中的for循环从数据框中打印该术语的频率
- python - 如何防止 Django 1.11 为非托管模型创建迁移?
- c# - JsonConvert.DeserializeObject
(json数据);强制日期时间到字符串列 - r - 在两个值之间展开组并计算唯一出现次数
- android - 以编程方式将包设置为设备所有者
- javascript - 如何告诉路由器跳过Angular中的上一个网址
- mithril.js - 在第一个动作时停止 mithrill 重绘
- javascript - 隐藏每个父母除第一个孩子以外的所有孩子
- ruby-on-rails - Webpacker 混乱