Code snippet to download the files along with versions from SPS 2003 document library.
1: private void Download()
2: {
3: string siteUrl = txtSite.Text.ToString();
4: string source = txtDocLib.Text.ToString();
5: string downloadPath= txtDownload.Text.ToString();
6: byte[] vContent = null;
7: int count = 1;
8:
9: using (SPSite site = new SPSite(siteUrl))
10: {
11: using (SPWeb web = site.OpenWeb())
12: {
13: SPFolder sourceFolder = web.GetFolder(source);
14:
15: //fetching data from doc lib
16: foreach (SPFile file in sourceFolder.Files)
17: {
18: //saving the main file
19: byte[] data= file.OpenBinary();
20: SaveFile(downloadPath + "\\" + file.Name, data);
21:
22: //saving each file's versions now
23:
24: //resetting the counter of file names
25: count = 1;
26: SPFileVersionCollection vCol = file.Versions;
27: for (int i = vCol.Count - 1; i >= 0; i--)
28: {
29: vContent = vCol[i].OpenBinary();
30: SaveFile(downloadPath + "\\" + file.Name.Substring(0,file.Name.IndexOf(".")) + "-version"
31: + count.ToString() + file.Name.Substring(file.Name.IndexOf(".")), vContent);
32: count++;
33: }
34: }
35: }
36: }
37:
38: MessageBox.Show("Done!");
39: }
40:
41: //to save file on the local file system
42: private void SaveFile(string fileName, byte[] data)
43: {
44: try
45: {
46: System.IO.FileStream fileStream = new System.IO.FileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
47: fileStream.Write(data, 0, data.Length);
48: fileStream.Close();
49: }
50: catch (Exception ex)
51: {
52: MessageBox.Show("Exception : " + ex.ToString());
53: }
54: }
:: Please note that I would have just uploaded my initial code and you might want to consider proper optimization of the code and disposal of objects properly. I might not have updated the latest code here.