DownloadContentAsync 返回现有文件的奇怪值

问题描述 投票:0回答:1

我已将一些 XSLT 文件存储在 azure blob 存储中并使用

BlobClient.DownloadContentAsync()

在.net功能应用程序中下载内容并进行处理。对于其他 xslt 文件,一切都很好,但对于 1. 上述方法只是返回如下所示的内容。

��

是的,就是这样,该文件是有效的 xslt 文件。我已经通过尝试删除文件来验证我是否指向正确的存储帐户。当我这样做时,代码确实抛出了不存在文件的错误。不太确定,上述行为的原因可能是什么。

c# azure xslt azure-blob-storage
1个回答
0
投票

对于其他 xslt 文件,一切都很好,但对于 1. 上面的方法只是返回如下所示的内容。 ��

您遇到的错误可能与内容的下载和解释方式有关,可能是由于下载时编码或文件中的某些损坏所致,并检查特定文件如何以正确的格式存储在存储帐户中。

这里是下载

xslt
文件并获得正确结果的示例代码。

代码:

using System;
using System.Text;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        string connectionString = "xxxx";
        string containerName = "venkat";
        string blobName = "sample.xslt"; 
  
        BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

        BlobClient blobClient = containerClient.GetBlobClient(blobName);

        try
        {
            BlobDownloadResult download = await blobClient.DownloadContentAsync();
            var content = download.Content;
            string xsltContent = Encoding.UTF8.GetString(content.ToArray());
            Console.WriteLine("XSLT Content: ");
            Console.WriteLine(xsltContent);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

上面从 Azure 存储帐户下载 blob 的内容,并且假定下载的内容是 UTF-8 编码的,并使用 Encoding.UTF8.GetString 方法将其转换为字符串。

输出:

XSLT Content:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- Root element of the XSLT -->
    <xsl:template match="/">
        <html>
            <head>
                <title>Sample XSLT Transformation</title>
            </head>
            <body>
                <h2>Transformed XML Data</h2>
                <table border="1">
                    <tr bgcolor="#9acd32">
                        <th>Name</th>
                        <th>Age</th>
                        <th>City</th>
                    </tr>
                    <!-- Match each 'person' element in the XML -->
                    <xsl:for-each select="people/person">
                        <tr>
                            <td><xsl:value-of select="name" /></td>
                            <td><xsl:value-of select="age" /></td>
                            <td><xsl:value-of select="city" /></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>

</xsl:stylesheet>

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.