2015-02-17 5 views
1

Это мое требование, мне нужно извлечь файлы из защищенных паролем файлов на молнии. Я хотел бы знать, есть ли доступные фрагменты кода. Я использую SSIS для загрузки этих ZIP-файлов с FTP. Есть ли какое-либо последнее обновление для рамки 4.5, которую я могу использовать.Выдержка из защищенных паролем файлов Zip

Update:

Я теперь ссылается файл и опробовали пример, но теперь я получаю исключение, я даже пытался добавить точку останова в моей задаче сценария, но все, что я получаю только исключение.

Исключение:

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) 
    at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript() 

Snapshot: enter image description here

Код:

try 
    { 
      string zipfilePath = @"C:\ZipFiles"; 
      string zipPassword = "qwerty"; 
     using (ZipFile zip = new ZipFile()) 
     { 
      zip.Password = zipPassword; 
      zip.AddFile("File-01.txt"); 
      zip.AddFile("File-02.txt"); 
      zip.AddFile("File-03.txt"); 
      zip.AddFile("File-04.txt"); 
      zip.Save(zipfilePath + "AllFiles.zip"); 
     } 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(e.ToString()); 
    } 

PS: Я новичок в C#

+0

Можете ли вы предоставить полное исключение, в частности сообщение, связанное с этой ошибкой, плюс любые внутренние исключения? – AHowgego

+0

Как я уже сказал, прежде чем попытаться с точкой останова внутри кода, но он даже не подходит к этой строке, все, что я получаю, это исключение. – Prakazz

+0

... Так исключение даже вызвано вызовом API DotNetZip? Мне очень трудно понять, что происходит, не видя кода, но похоже, что у вас могут быть другие проблемы. – AHowgego

ответ

6

DotNetZip поддерживает защиту паролем. Он доступен в виде пакета NuGet и позволяет извлекать из защищенного паролем архива следующим образом (взяты и модифицирована по ссылке):

string baseDirectory = "C:\\output"; 
string password = "password"; 

using (ZipFile zip = ZipFile.Read("MyArchive.zip")) 
{ 
    ZipEntry e = zip["MyFile.txt"]; 
    e.ExtractWithPassword(baseDirectory, password); 
} 

Есть много других «кодовых фрагментов», как это на C# Страница с примерами Я связал вас.

+0

Я загрузил почтовый индекс и добавил его в качестве ссылки !! Но я получаю исключение, так должна ли эта сборка быть зарегистрирована в GAC? – Prakazz

+1

Нет, это не сборка GAC, это сторонний пакет. В консоли диспетчера пакетов запустите 'Install-Package DotNetZip', а затем добавьте ссылку в свой проект в' Ionic.Zip'. Что говорит ваше исключение? – AHowgego

+0

Выполнение установки. По-прежнему имеет ту же проблему. Я редактирую вопрос с исключением. – Prakazz