问题描述
我想使用 .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 = {""}})
}