2014-09-09 2 views
0

ZipFiles() 유틸리티 메서드를 사용하고 빈 zip 파일을 생성하려고합니다. Sitecore 6.5를 사용하고 있습니다. 오류나 권한은 없습니다.빈 zip 파일을 만드는 Sitecore FileUtil.ZipFiles

의견이 있으십니까? 여기에 코드가 있습니다.

public void CreateZipFile(string zipfileName, List<string> files) 
{ 
var zipfile = string.Format("{0}/{1}/{2}", TempFolder.Folder, "myfolder", zipfileName) ; 
var fileArray = files.ToArray(); 
var x = FileUtil.ZipFiles(zipfile, fileArray); 
} 

편집 : 나는 FileUtil.ZipFiles 방법의 올바른 사용법은이

var files = new List<string> { FileUtil.MapPath("/temp/sample.xlf") }; 
+0

'files'리스트에서 파일의 절대 경로 (예 :'c : \ inetpub \ readme.text')를 전달하거나 웹 응용 프로그램 루트에 상대적으로 전달합니까? –

+0

나는 둘 다 시도했지만 현재 var 파일 = new List를 전달하고있다. {FileUtil.MapPath ("/ temp/sample.xlf")}; – mluker

+0

올바른 사용법은'FileUtil.ZipFiles ("/ test.zip", new [] { "/ web.config", "/otherfile.txt"})'이며 파일은 웹 응용 프로그램의 루트에 생성됩니다 . –

답변

3

같은 파일을 전달하고있다 :

FileUtil.ZipFiles("/test.zip", new []{"/web.config", "/otherfile.txt"}) 

Sitecore 자동으로 경로를 매핑합니다. zip 파일은 웹 응용 프로그램 루트에 만들어집니다. 당신이 웹 루트 외부 및 내부 평면 구조의 zip 파일을 만들려면 COMMENT AFTER


편집

, 당신은 ZipWriter 클래스 같은 Sitecore를 사용할 수 있습니다

public static string ZipFiles(string absolutePathToZipfile, string[] files) 
{ 
    using (ZipWriter zipWriter = new ZipWriter(absolutePathToZipfile)) 
    { 
     foreach (string path in files) 
     { 
      using (FileStream fileStream = System.IO.File.OpenRead(path.StartsWith("/") ? FileUtil.MapPath(path) : path)) 
       zipWriter.AddEntry(FileUtil.GetFileName(path), fileStream); 
     } 
    } 
    return absolutePathToZipfile; 
} 
+0

파일이 어디에 살든지 zip 파일이 웹 루트를 기반으로하는 zip 파일의 구조로 만들어 졌는지는 상관 없습니다. 의미, 모든 파일은 우편 번호 안에 폴더에 있습니다. 필자는 sitecore 임시 폴더에 zip 파일을 만들고 zip 파일을 평평하게하고 싶었습니다. – mluker

+0

답변이 수정되었습니다. 코드가 작동하는지 확인 –

+0

고맙습니다. 그게 내가 찾고 있던 것입니다! – mluker

관련 문제