如何在不指定大小的情况下创建 ShareFileClient 以便能够将数据流式传输到它?
How to create ShareFileClient without specifying it's size to be able to stream data to it?
我想使用 .NET 在 Azure FileShare 资源中的 FileShareClient 上创建新的 blob api。我无法在开始时指定它的大小(因为稍后会用数据填充它,例如用行填充的 csv 文件,最多几 GB)。
我试图在我的代码中使用这样的东西:
using Azure.Storage.Files.Shares
ShareFileClient fileShare = new ShareFileClient(
"MYConnectionString",
"FileShareName",
"TestDirectoryName");
if (!fileShare.Exists())
{
fileShare.Create(0);
}
var stream = fileShare.OpenWrite(true, 0);
[编辑]
我有一个例外:System.ArgumentException:'options.MaxSize must be set if overwrite is set to true' 有什么办法可以避免指定这个大小?
请尝试使用最新的软件包Azure.Storage.Files.Shares, version 12.5.0。
注意,在代码new ShareFileClient()
中,最后一个参数是directory name + file name
。
查看下面的代码:
ShareFileClient f2 = new ShareFileClient(connectionString, shareName, dirName + "/test.txt");
if (!f2.Exists())
{
f2.Create(0);
}
可以创建0大小的文件,这里是测试结果:
Micro$ofts无限智慧:resize隐藏在SetHttpHeaders方法中
public void AppendFile(string filePath, byte[] data)
{
ShareFileClient fileShare = new ShareFileClient(connectionString, shareClient.Name, filePath);
if (!fileShare.Exists())
fileShare.Create(0);
for (int i = 0; i < 10; i++)
{
var properties = fileShare.GetProperties();
var openOptions = new ShareFileOpenWriteOptions();
fileShare.SetHttpHeaders(properties.Value.ContentLength + data.Length);
var stream = fileShare.OpenWrite(false, properties.Value.ContentLength, openOptions);
stream.Write(data, 0, data.Length);
stream.Flush();
}
}
我想使用 .NET 在 Azure FileShare 资源中的 FileShareClient 上创建新的 blob api。我无法在开始时指定它的大小(因为稍后会用数据填充它,例如用行填充的 csv 文件,最多几 GB)。
我试图在我的代码中使用这样的东西:
using Azure.Storage.Files.Shares
ShareFileClient fileShare = new ShareFileClient(
"MYConnectionString",
"FileShareName",
"TestDirectoryName");
if (!fileShare.Exists())
{
fileShare.Create(0);
}
var stream = fileShare.OpenWrite(true, 0);
[编辑] 我有一个例外:System.ArgumentException:'options.MaxSize must be set if overwrite is set to true' 有什么办法可以避免指定这个大小?
请尝试使用最新的软件包Azure.Storage.Files.Shares, version 12.5.0。
注意,在代码new ShareFileClient()
中,最后一个参数是directory name + file name
。
查看下面的代码:
ShareFileClient f2 = new ShareFileClient(connectionString, shareName, dirName + "/test.txt");
if (!f2.Exists())
{
f2.Create(0);
}
可以创建0大小的文件,这里是测试结果:
Micro$ofts无限智慧:resize隐藏在SetHttpHeaders方法中
public void AppendFile(string filePath, byte[] data)
{
ShareFileClient fileShare = new ShareFileClient(connectionString, shareClient.Name, filePath);
if (!fileShare.Exists())
fileShare.Create(0);
for (int i = 0; i < 10; i++)
{
var properties = fileShare.GetProperties();
var openOptions = new ShareFileOpenWriteOptions();
fileShare.SetHttpHeaders(properties.Value.ContentLength + data.Length);
var stream = fileShare.OpenWrite(false, properties.Value.ContentLength, openOptions);
stream.Write(data, 0, data.Length);
stream.Flush();
}
}