我有代碼應該從數據庫中讀取二進制值並將其轉換爲zip文件。它只創建一個大小爲43kb的文件,不能提取。我錯過了什麼?如何寫二進制文件
com = new SqlCommand("SELECT BinFile FROM tbl_reports WHERE DBKey=411", conString);
byte[] blob = (byte[])com.ExecuteScalar();
File.WriteAllBytes("C:\\" + "test.zip", blob);
我有代碼應該從數據庫中讀取二進制值並將其轉換爲zip文件。它只創建一個大小爲43kb的文件,不能提取。我錯過了什麼?如何寫二進制文件
com = new SqlCommand("SELECT BinFile FROM tbl_reports WHERE DBKey=411", conString);
byte[] blob = (byte[])com.ExecuteScalar();
File.WriteAllBytes("C:\\" + "test.zip", blob);
使用DotNetZip,這裏是示例。
using (ZipFile zip = new ZipFile())
{
zip.Password = pwd;
zip.AddFile(saveFileDialog1.FileName + ".xml");
zip.Save(saveFileDialog1.FileName + ".zip");
}
此外,我認爲你需要將byte[]
轉換爲字符串,然後文本文件。
您可以使用convert.frombase64string方法!
編輯
如果你想寫byte[]
到文件,使用此功能,
public bool ByteArrayToFile(string _FileName, byte[] _ByteArray)
{
try
{
System.IO.FileStream _FileStream =
new System.IO.FileStream(_FileName, System.IO.FileMode.Create,
System.IO.FileAccess.Write);
_FileStream.Write(_ByteArray, 0, _ByteArray.Length);
_FileStream.Close();
return true;
}
catch (Exception _Exception)
{
Console.WriteLine("Exception caught in process: {0}",
_Exception.ToString());
}
return false;
}
而調用這個函數喜歡
com = new SqlCommand("SELECT BinFile FROM tbl_reports WHERE DBKey=411", conString);
byte[] blob = (byte[])com.ExecuteScalar();
ByteArrayToFile("C:\\test.txt",blob);
我不想壓縮文件,我只需要從數據庫中讀取文件。不一定是zip,任何文件類型。 – user2772209
你說「將其轉換成zip文件」!那麼,這是什麼意思? – zey
請原諒我的'英語'。我只需要從數據庫中讀取一個文件並保存。 – user2772209
你寫過的二進制數據轉換文本文件和確保,它是你想要的數據? – Marco
是的一切都在數據庫中。我只需要將它們保存爲可用文件。有不同的類型,從zip,jpg,xsl等 – user2772209