如何以zip格式从数据库下载多个文件?当您没有文件名时

时间:2013-10-13 06:31:01

标签: c# .net winforms

我有存储在数据库中的文件。我没有存储在数据库中的名称,所以我检查字节数组的前4个字节,以确定文件是pdf还是jpg ..目前我一次只能下载一个文件。我想以zip格式下载DataTable中的所有文件..(因为我没有文件的原始名称,我希望给它一个随机名称以及我在比较后获得的扩展名)

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();

请帮帮我。

1 个答案:

答案 0 :(得分: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();
}