Acumatica 有没有办法打开和读取通过PXUploadDialog以编程方式上传的zip文件?

Acumatica 有没有办法打开和读取通过PXUploadDialog以编程方式上传的zip文件?,acumatica,Acumatica,我有一个用户想要上传一个包含多个图像的zip文件和一个包含图像相关数据的CSV文件。他们希望能够上传zip文件,并让程序通过查找和处理CSV文件中的数据对其进行解析,然后将zip中的图像存储到相应的位置 我试图找出如何打开zip,这样我就可以循环浏览其中的每个文件,找到我需要的东西。有什么方法可以做到这一点吗?您可以使用Acumatica Framework中的ZipArchive: // Uploaded file needs to be attached to a DAC record Gu

我有一个用户想要上传一个包含多个图像的zip文件和一个包含图像相关数据的CSV文件。他们希望能够上传zip文件,并让程序通过查找和处理CSV文件中的数据对其进行解析,然后将zip中的图像存储到相应的位置


我试图找出如何打开zip,这样我就可以循环浏览其中的每个文件,找到我需要的东西。有什么方法可以做到这一点吗?

您可以使用Acumatica Framework中的ZipArchive:

// Uploaded file needs to be attached to a DAC record
Guid[] files = PXNoteAttribute.GetFileNotes(DACCache, DACRecord);
UploadFileMaintenance upload = PXGraph.CreateInstance<UploadFileMaintenance>();

foreach (Guid fileID in files)
{
    FileInfo fileInfo = upload.GetFile(fileID);

    if (fileInfo != null)
    {
        using (MemoryStream stream = new MemoryStream(fileInfo.BinData))
        {
            ZipArchive zip = ZipArchive.OpenReadonly(stream);

            string tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            Directory.CreateDirectory(tempDirectory);
            ZipFolder.Decompress(zip, tempDirectory, true);

            foreach (string filePath in Directory.GetFiles(tempDirectory))
            {
                // Enumerating decompressed files
            }
        }
    }
}
//上传的文件需要附加到DAC记录
Guid[]files=PXNoteAttribute.GetFileNotes(DACCache,DACRecord);
UploadFileMaintenance upload=PXGraph.CreateInstance();
foreach(文件中的Guid文件ID)
{
FileInfo FileInfo=upload.GetFile(fileID);
如果(fileInfo!=null)
{
使用(MemoryStream stream=新的MemoryStream(fileInfo.BinData))
{
ZipArchive zip=ZipArchive.OpenReadonly(流);
字符串tempDirectory=Path.Combine(Path.GetTempPath(),Path.GetRandomFileName());
CreateDirectory(tempDirectory);
解压缩(zip,tempDirectory,true);
foreach(Directory.GetFiles(tempDirectory)中的字符串文件路径)
{
//枚举解压缩文件
}
}
}
}

谢谢。我将把它付诸实施,并让您知道结果。代码未经测试,几乎没有错误处理,但应该可以让您开始使用。我在Acumatica的ZipArchive上看到的唯一函数是CreateFrom()。我需要OpenReadonly的参考资料吗?而且,我找不到任何类似ZipFolder的东西。到目前为止,我能够使其余的语法正常工作。有什么建议吗?另外,ZipFolder的意思是ZipFile吗?PX.DbServices.ZipArchive和PX.DbServices.ZipFolder,您可能可以使用PX.Common.ZipArchive获得类似的结果,但随后的代码将与我提供的代码不同。谢谢!这正是我需要的。遗憾的是,我忘了提到文件是密码的。Acumatica是否能够在尝试打开zip文件时向其发送密码?