using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
-----------------------将文件保存到数据库
/// <summary>
/// 新增附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton1_Click(object sender, EventArgs e)
{
OpenFileDialog fm = new OpenFileDialog();
//fm.InitialDirectory = Environment.CurrentDirectory;//当前目录
fm.InitialDirectory = "C://Documents and Settings//All Users//桌面";
fm.Title = "选择附件";
fm.Filter = "所有文件(*.*)|*.*";
fm.ShowDialog();
if (fm.FileName != "")
{
string strFileName = Path.GetFileName(fm.FileName);//获取不包含路径信息的文件名
FileStream fs = new FileStream(fm.FileName, FileMode.Open);//使用 FileStream 类对文件系统上的文件进行读取
BinaryReader br = new BinaryReader(fs);//用特定的编码将基元数据类型读作二进制值
Array WJ = br.ReadBytes((int)br.BaseStream.Length);
DataView dtv = (DataView)gridControl1.DataSource;
DataRow drNew = dtv.Table.NewRow();
drNew[TABLE_BSFJ.COLUMN_CWJMC] = strFileName;//文件名称
drNew[TABLE_BSFJ.COLUMN_CWJMS] = strFileName;//文件描述
drNew[TABLE_BSFJ.COLUMN_BWJ] = WJ;//文件
dtv.Table.Rows.Add(drNew);
fs.Close();
br.Close();
}
}
----------------------------------------------------------
数据库对应字段BWJ,类型:BLOB,长度:104857600 BYTES(100MB)
Path.GetFileName
FileStream
BinaryReader
命名空间:System.IO
程序集:mscorlib(在 mscorlib.dll 中)
--------------------------------------------------------------将数据库中BLOB数据读取成文件:
/// <summary>
/// 导出标书附件
/// </summary>
private void ExportBSFJ(string strPath)
{
DataSet dsBSFJ = pModule.SerFUw.GETBSFJWJBYIBSID(IBSID);
if (dsBSFJ.Tables[TABLE_BSFJ.NAME].Rows.Count > 0)
{
for (int i = 0; i < dsBSFJ.Tables[TABLE_BSFJ.NAME].Rows.Count; i++)
{
string strFileName = dsBSFJ.Tables[TABLE_BSFJ.NAME].Rows[i][TABLE_BSFJ.COLUMN_CWJMC].ToString();//文件名称
FileStream fs = new FileStream(strPath + strFileName, FileMode.Create);//使用 FileStream 类创建文件
Byte[] WJByte = (Byte[])dsBSFJ.Tables[TABLE_BSFJ.NAME].Rows[i][TABLE_BSFJ.COLUMN_BWJ];//读取BLOB类型字段转换成Byte[]
fs.Write(WJByte, 0, WJByte.Length);//将读取的字节写入文件
fs.Close();
}
}
}