2013-10-13 12 views
0

我有文件存儲在數據庫中。我沒有存儲在數據庫中的名字,所以我檢查前4個字節的字節數組,以找出是否該文件是PDF或JPG。目前我能夠只下載一個文件在同一時間。我想下載所有的都是在一個zip格式的數據表中的文件。(因爲我沒有我是wiling給它一個隨機名稱與擴展比較之後我得到的文件的原始名稱)如何以zip格式從數據庫下載多個文件?當你沒有文件的名稱

DataRow objRow; 
objAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(objAdapter); 
objAdapter.Fill(objTable); 
objRow = objTable.Rows[1]; 
byte[] objData; 
objData = (byte[])objRow["img"]; 
// Stream stream = new MemoryStream(objData); 
var firstNBytes = objData.Take(4); 
Byte[] threeBytes = new Byte[] { objData[0], objData[1], objData[2], objData[3] }; 
var bytesToCompare = Encoding.Unicode.GetBytes("0x25"); 
bool equal = firstNBytes.SequenceEqual(bytesToCompare); 
string hex = BitConverter.ToString(threeBytes); 
hex.Replace("-", ""); 

if (objSfd.ShowDialog() != DialogResult.Cancel) 
{ 
string strFileToSave = objSfd.FileName; 

//string strFileToSave = "abc"; 

if (hex == "25-50-44-46") 
{ 
    strFileToSave += ".pdf"; 
} 
else 
{ 
    strFileToSave += ".jpg"; 
} 

FileStream objFileStream = new FileStream(strFileToSave, FileMode.Create, FileAccess.Write); 
objFileStream.Write(objData, 0, objData.Length); 
objFileStream.Close(); 

請幫助我。

+0

也許你需要一個Zip庫來幫助你。看看http://dotnetzip.codeplex.com/或http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx – nim

回答

0

目前我能只下載一個文件在同一時間。我想 以zip格式下載DataTable中的所有文件。

嘗試通過您的objTable.Rows這樣的迭代,

objAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(objAdapter); 
objAdapter.Fill(objTable); 
foreach(DataRow objRow in objTable.Rows) 
{ 
byte[] objData = (byte[])objRow["img"]; 
var firstNBytes = objData.Take(4); 
Byte[] threeBytes = new Byte[] { objData[0], objData[1], objData[2], objData[3] }; 
var bytesToCompare = Encoding.Unicode.GetBytes("0x25"); 
bool equal = firstNBytes.SequenceEqual(bytesToCompare); 
string hex = BitConverter.ToString(threeBytes); 
hex.Replace("-", ""); 


string strFileToSave = Guid.NewGuid(); 

if (hex == "25-50-44-46") 
{ 
    strFileToSave += ".pdf"; 
} 
else 
{ 
    strFileToSave += ".jpg"; 
} 

FileStream objFileStream = new FileStream(strFileToSave, FileMode.Create, FileAccess.Write); 
objFileStream.Write(objData, 0, objData.Length); 
objFileStream.Close(); 
} 
+0

我已經做到了......但不是通過一個下載一個它會更好一次下載所有附件。 – Arbaaz

+0

你一次下載所有附件是什麼意思? @Arbaaz – Rezoan

+0

如果你已經這麼做了,爲什麼你發佈這樣的問題?@Arbaaz – Rezoan

相關問題