如何打开具有特定编码类型的 ShareFileClient 写入流?

问题描述

我想使用 .NET api 在 Azure FileShare 资源中的 FileShareClient 上创建新 blob。有没有办法在执行此操作时指定它的编码? 要打开写入文件,我使用以下内容

  public Stream FileShareOpenWrite(Response<ShareFileProperties> properties,ShareFileOpenWriteOptions openoptions)
    {
        return shareFileClient.OpenWrite(false,properties.Value.ContentLength,openoptions);
    }

是否有可能在打开 ShareFileClient 的编写器时指定编码?

对于本地文件我有类似的功能,可以创建新的 StreamWriter 并允许我直接指定 ANSI 编码:

     using (var writer = new StreamWriter(userInputModel.Path,true,Encoding.GetEncoding("ISO-8859-1")))

解决方法

如果要在文件共享中设置Azure文件的编码,我们可以使用rest API Set File Properties,然后在请求头中设置x-ms-content-encoding

代码方面,如果你使用的是azure文件存储sdk,可以参考这个article

例如

ShareClient share = new ShareClient(connectionString,shareName);
ShareDirectoryClient directory = share.GetDirectoryClient(dirName);
ShareFileClient file = directory.GetFileClient(fileName);

if(await file.ExistsAsync()){

  file.SetHttpHeadersAsync(<file size>,new ShareFileHttpHeaders(){ContentEncoding = {""}})
}else{
 file.CreateAsync (<file size>,new ShareFileHttpHeaders(){ContentEncoding = {""}})
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...