我有存储在数据库中的文件。我没有存储在数据库中的名称,所以我检查字节数组的前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();
请帮帮我。
答案 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();
}