我想将我的存储从本地更改为Azure blob存储。我下载了
WindowsAzure.Storage
我有以下接口
public interface IStorage
{
Task Create(Stream stram, string path);
}
public interface IBlobContainerFactory
{
CloudBlobContainer Get();
}
这是我的Azure实现
public class AzureBlobStorage : IStorage
{
private IBlobContainerFactory ContainerFactory
public AzureBlobStorage(IBlobContainerFactory containerFactory)
{
ContainerFactory = containerFactory;
}
public async Task Create(Stream stream, string path)
{
CloudBlockBlob blockBlob = ContainerFactory.Get().GetBlockBlobReference(path);
await blockBlob.UploadFromStreamAsync(stream);
}
}
然后,在我的
program.cs
我尝试了以下方法
if (Configuration["Default:StorageType"].Equals("Azure", StringComparison.CurrentCultureIgnoreCase))
{
services.AddSingleton(opts => new AzureBlobOptions
{
ConnectionString = Configuration["Storages:Azure:ConnectionString"],
DocumentContainer = Configuration["Storages:Azure:DocumentContainer"]
});
services.AddSingleton<IBlobContainerFactory, DefaultBlobContainerFactory>();
services.AddScoped<IStorage, AzureBlobStorage>();
}
else
{
services.AddScoped<IStorage, LocalStorage>();
}
Container = services.BuildServiceProvider();
// Resolve the storage from the IoC container
IStorage storage = Container.GetService<IStorage>();
// Read a local file
using (FileStream file = File.Open(@"C:\Screenshot_4.png", FileMode.Open))
{
try
{
// write it to the storeage
storage.Create(file, "test/1.png");
}
catch (Exception e)
{
}
}
AzureBlobStorage
什么也没发生。文件不会写入存储,也不会引发异常!
请注意,当我在中更改配置时
Default:StorageType
Local
该文件按预期在本地写入。但无法将其写入Azure博客。