使用新命名空间重写方法 - Azure.Storage.Files.Shares
Rewrite the method using new namespace - Azure.Storage.Files.Shares
我想将使用“Microsoft.Azure.Storage.File”的方法重写为“Azure.Storage.Files.Shares”。此方法是使用 sasuri 将文件复制到文件共享。
/// <summary>
/// Data model for attachment content
/// </summary>
public class Attachment
{
/// <summary>
/// File Name
/// </summary>
public string FileName { get; set; }
/// <summary>
/// FileContent
/// </summary>
public string Content { get; set; }
/// <summary>
/// File Type
/// </summary>
public string ContentType { get; set; }
}
/// <summary>
/// CopyFileToShareAsync
/// </summary>
/// <param name="sasUri"></param>
/// <param name="attachment"></param>
/// <returns></returns>
public async Task CopyFileToShareAsync(string sasUri, Attachment attachment)
{
var cloudFileDirectory = new CloudFileDirectory(new Uri(sasUri));
var cloudFile = cloudFileDirectory.GetFileReference(attachment.FileName);
byte[] bytes = Convert.FromBase64String(attachment.Content);
await cloudFile.UploadFromStreamAsync(new MemoryStream(bytes));
}
请尝试如下操作:
class Program
{
static void Main(string[] args)
{
string sasUri = "https://account-name.file.core.windows.net/share-name?sv=2020-04-08&se=2021-03-30T18%3A30%3A00Z&sr=s&sp=cw&sig=ZYXpOsCwP6uBOudbEu3TWwBAPc%2BOefu%2B%2F0lKl5ls3k8%3D";
Attachment attachment = new Attachment()
{
FileName = "sample.text",
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("Some content")),
ContentType = "text/plain"
};
CopyFileToShareAsync(sasUri, attachment).GetAwaiter().GetResult();
Console.WriteLine("Content uploaded");
}
static async Task CopyFileToShareAsync(string sasUri, Attachment attachment)
{
ShareDirectoryClient shareDirectoryClient = new ShareDirectoryClient(new Uri(sasUri));
ShareFileClient shareFileClient = shareDirectoryClient.GetFileClient(attachment.FileName);
byte[] fileContent = Convert.FromBase64String(attachment.Content);
await shareFileClient.CreateAsync(fileContent.Length, new Azure.Storage.Files.Shares.Models.ShareFileHttpHeaders()
{
ContentType = attachment.ContentType
});
using (MemoryStream ms = new MemoryStream(fileContent))
{
await shareFileClient.UploadAsync(ms);
}
}
}
public class Attachment
{
/// <summary>
/// File Name
/// </summary>
public string FileName { get; set; }
/// <summary>
/// FileContent
/// </summary>
public string Content { get; set; }
/// <summary>
/// File Type
/// </summary>
public string ContentType { get; set; }
}
我想将使用“Microsoft.Azure.Storage.File”的方法重写为“Azure.Storage.Files.Shares”。此方法是使用 sasuri 将文件复制到文件共享。
/// <summary>
/// Data model for attachment content
/// </summary>
public class Attachment
{
/// <summary>
/// File Name
/// </summary>
public string FileName { get; set; }
/// <summary>
/// FileContent
/// </summary>
public string Content { get; set; }
/// <summary>
/// File Type
/// </summary>
public string ContentType { get; set; }
}
/// <summary>
/// CopyFileToShareAsync
/// </summary>
/// <param name="sasUri"></param>
/// <param name="attachment"></param>
/// <returns></returns>
public async Task CopyFileToShareAsync(string sasUri, Attachment attachment)
{
var cloudFileDirectory = new CloudFileDirectory(new Uri(sasUri));
var cloudFile = cloudFileDirectory.GetFileReference(attachment.FileName);
byte[] bytes = Convert.FromBase64String(attachment.Content);
await cloudFile.UploadFromStreamAsync(new MemoryStream(bytes));
}
请尝试如下操作:
class Program
{
static void Main(string[] args)
{
string sasUri = "https://account-name.file.core.windows.net/share-name?sv=2020-04-08&se=2021-03-30T18%3A30%3A00Z&sr=s&sp=cw&sig=ZYXpOsCwP6uBOudbEu3TWwBAPc%2BOefu%2B%2F0lKl5ls3k8%3D";
Attachment attachment = new Attachment()
{
FileName = "sample.text",
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("Some content")),
ContentType = "text/plain"
};
CopyFileToShareAsync(sasUri, attachment).GetAwaiter().GetResult();
Console.WriteLine("Content uploaded");
}
static async Task CopyFileToShareAsync(string sasUri, Attachment attachment)
{
ShareDirectoryClient shareDirectoryClient = new ShareDirectoryClient(new Uri(sasUri));
ShareFileClient shareFileClient = shareDirectoryClient.GetFileClient(attachment.FileName);
byte[] fileContent = Convert.FromBase64String(attachment.Content);
await shareFileClient.CreateAsync(fileContent.Length, new Azure.Storage.Files.Shares.Models.ShareFileHttpHeaders()
{
ContentType = attachment.ContentType
});
using (MemoryStream ms = new MemoryStream(fileContent))
{
await shareFileClient.UploadAsync(ms);
}
}
}
public class Attachment
{
/// <summary>
/// File Name
/// </summary>
public string FileName { get; set; }
/// <summary>
/// FileContent
/// </summary>
public string Content { get; set; }
/// <summary>
/// File Type
/// </summary>
public string ContentType { get; set; }
}