有没有一种方法可以打开和读取PXUploadDialog以编程方式上传的zip文件?

时间:2018-07-10 15:01:53

标签: acumatica

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

我正试图弄清楚如何打开zip,以便我可以在其中的每个文件中循环查找所需的文件。有什么办法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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
            }
        }
    }
}