C# 如何为移动应用程序同步表配置azure blob存储
我正在为Azure移动应用程序编写一个管理面板。后端使用Asp.net MVC和实体框架来创建和编辑数据库项 我知道,当与表控制器通信时,xamarin应用程序使用C# 如何为移动应用程序同步表配置azure blob存储,c#,azure,xamarin,azure-blob-storage,C#,Azure,Xamarin,Azure Blob Storage,我正在为Azure移动应用程序编写一个管理面板。后端使用Asp.net MVC和实体框架来创建和编辑数据库项 我知道,当与表控制器通信时,xamarin应用程序使用SyncTable类的文件同步功能,以便上传和下载文件以及创建的数据库对象 我想添加与我通过后端创建的数据库对象相对应的图像 我可以通过blob存储上传图像,但我不确定在何处放置文件,以便SyncTable.FileSync方法正确检索图像 ShopItem数据对象 public class ShopItem : EntityData
SyncTable
类的文件同步功能,以便上传和下载文件以及创建的数据库对象
我想添加与我通过后端创建的数据库对象相对应的图像
我可以通过blob存储上传图像,但我不确定在何处放置文件,以便SyncTable.FileSync方法正确检索图像
ShopItem数据对象
public class ShopItem : EntityData
{
public decimal Price { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Note { get; set; }
}
布隆德勒
public class BlobHandler
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
private string imageDirectoryUrl;
/// <summary>
/// Receives the users Id for where the pictures are and creates
/// a blob storage with that name if it does not exist.
/// </summary>
/// <param name="imageDirectoryUrl"></param>
public BlobHandler(string imageDirecoryUrl)
{
this.imageDirectoryUrl = imageDirecoryUrl;
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference(imageDirecoryUrl);
// Create the container if it doesn't already exist.
container.CreateIfNotExists();
//Make available to everyone
container.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
public void Upload(IEnumerable<HttpPostedFileBase> file)
{
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference(imageDirectoryUrl);
if (file != null)
{
foreach (var f in file)
{
if (f != null)
{
CloudBlockBlob blockBlob = container.GetBlockBlobReference(f.FileName);
blockBlob.UploadFromStream(f.InputStream);
}
}
}
}
public List<string> GetBlobs()
{
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference(imageDirectoryUrl);
List<string> blobs = new List<string>();
// Loop over blobs within the container and output the URI to each of them
foreach (var blobItem in container.ListBlobs())
blobs.Add(blobItem.Uri.ToString());
return blobs;
}
}
公共类BlobHandler
{
//从连接字符串中检索存储帐户。
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(
GetSetting(“StorageConnectionString”);
私有字符串imageDirectoryUrl;
///
///接收图片所在位置的用户Id并创建
///具有该名称的blob存储(如果不存在)。
///
///
公共BlobHandler(字符串imageDirecoryUrl)
{
this.imageDirectoryUrl=imageDirectoryUrl;
//创建blob客户端。
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
//检索对容器的引用。
CloudBlobContainer container=blobClient.GetContainerReference(imageDirecoryUrl);
//如果容器尚不存在,请创建该容器。
container.CreateIfNotExists();
//提供给每个人
container.SetPermissions(
新BlobContainerPermissions
{
PublicAccess=BlobContainerPublicAccessType.Blob
});
}
公共无效上载(IEnumerable文件)
{
//创建blob客户端。
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
//检索对容器的引用。
CloudBlobContainer container=blobClient.GetContainerReference(imageDirectoryUrl);
如果(文件!=null)
{
foreach(文件中的var f)
{
如果(f!=null)
{
CloudBlockBlob blockBlob=container.getblockblobbreference(f.FileName);
blockBlob.UploadFromStream(f.InputStream);
}
}
}
}
公共列表GetBlobs()
{
//创建blob客户端。
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
//检索对以前创建的容器的引用。
CloudBlobContainer container=blobClient.GetContainerReference(imageDirectoryUrl);
List BLOB=新列表();
//循环容器中的blob并将URI输出到每个blob
foreach(container.ListBlobs()中的var blobItem)
Add(blobItem.Uri.ToString());
返回斑点;
}
}
用于发布图像的ActionResult
public ActionResult Upload(IEnumerable<HttpPostedFileBase> file)
{
BlobHandler bh = new BlobHandler("containername");
bh.Upload(file);
var blobUris = bh.GetBlobs();
return RedirectToAction("Index", blobUris);
}
公共操作结果上传(IEnumerable文件)
{
BlobHandler bh=新BlobHandler(“容器名称”);
上传(文件);
var blobUris=bh.GetBlobs();
返回重定向操作(“索引”,blobUris);
}