Azure函数,压缩上传

bkhjykvo  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(167)

我正在尝试修复一个Azure函数,该函数正在从blob存储中阅读上传的文件夹及其文件的流。我正在尝试添加代码,以便从上传的压缩文件夹中阅读内容/文件名。
我有两个问题:

问题1:我能够调试Azure run方法两次,但现在它不再阅读了。我认为它只读一次,但它只读一次正常的文件夹,但忽略了压缩的一个。

如何使Azure函数将读取相同的文件夹用于调试目的,有帮助吗?

问题2:这段代码至少读取普通文件夹一次,但忽略压缩文件夹。我无法弄清楚如何访问和读取特定的压缩文件夹?

我在运行时得到以下结果,并且我无法在run方法中命中断点:

FileFunction: blobTrigger

ListsFunction: timerTrigger

For detailed output, run func with --verbose flag.
[2023-04-25T03:02:40.519Z] Host lock lease acquired by instance ID '000000000000000000000000UI906F5'.

示例代码:

[FunctionName("FileFunction")]
public async Task Run([BlobTrigger("ContainerName/{folder}/{name}", Connection = "AzureJobsStorage")] Stream stream, string folder, string name, IDictionary<string, string> metadata)
{
    string fileName;

    Log.Information("'{name}' was uploaded to folder '{folder}'.", name, folder);

    // Check for zipped folder
    using (ZipArchive archive = new ZipArchive(stream))
    {
        foreach (ZipArchiveEntry entry in archive.Entries)
        {
            fileName = entry.FullName; //trying to read zip file
        }
    }
gorkyyrv

gorkyyrv1#

这段代码至少读取普通文件夹一次,但忽略压缩文件夹。我无法弄清楚如何访问和读取特定的压缩文件夹
我注意到您的代码中缺少读取zip文件内容的代码。要读取zip文件的内容,需要访问每个ZipArchiveEntryStream并读取其内容。
使用下面的代码检查上传的文件是否。zip文件或普通文件,并读取该特定文件的内容。

using System;
using System.IO;
using System.IO.Compression;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace Blobtriggerfunction
{
    public class Function1
    {
        [FunctionName("Function1")]
        public void Run([BlobTrigger("samples-workitems/{folder}/{name}", Connection = "demo")] Stream myBlob, string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
           //checking if the file is .zip 
            if (name.EndsWith(".zip"))
            {
            //code to read the contents of .zip file.
                using (ZipArchive archive = new ZipArchive(myBlob))
                {
                    foreach (ZipArchiveEntry entry in archive.Entries)
                    {
                        log.LogInformation($"File name: {entry.FullName}");
                        using (Stream stream = entry.Open())
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            string contents = reader.ReadToEnd();
                            log.LogInformation($"File contents: {contents}");
                           
                        }
                    }
                }
            }
            //if the file is not .zip file
            else
            {
            //code to read the contents of .zip file.
                using (StreamReader reader = new StreamReader(myBlob))
                {
                    string contents = reader.ReadToEnd();
                    log.LogInformation($"File contents: {contents}");
                   
                }
            }
        }
    }
}

上传中。将文件压缩到blob中的文件夹:

最近上传阅读内容。zip文件:

上传正常(.txt)文件到blob中的文件夹:

最近上传阅读内容。txt文件:

相关问题