sql 将文件转换为二进制上传(或下载)到数据库中
2013-05-17 15:22
351 查看
附件表结构如下:
上传附件:
/// <summary>
/// 上传附件
/// </summary>
/// <param name="filePath">上传文件路径</param>
/// <param name="strAttachmentId">返回附件ID</param>
/// <returns>true :上传成功 ; false :上传失败</returns>
private bool UploadAttachment(string filePath, out string strAttachmentId)
{
strAttachmentId = null;
if (string.IsNullOrEmpty(filePath))
{
return false;
}
//截取路径下的文件名
int index = filePath.LastIndexOf(@"\");
string fileName = string.Empty;
if (index > 0)
{
fileName = filePath.Substring(index + 1, filePath.Length - index - 1);
}
//将附件内容转换成二进制信息
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] bufContent = new byte[stream.Length];
stream.Read(bufContent, 0, Convert.ToInt32(stream.Length));
stream.Flush();
stream.Close();
//三层架构 访问数据库代码
DBAccess.Model.attachment model = new DBAccess.Model.attachment();
strAttachmentId = Guid.NewGuid().ToString("D");
model.Id = strAttachmentId;
model.Name = fileName;
model.Content = bufContent;
model.UploadTime = DateTime.Now;
DBAccess.BLL.attachment bll = new DBAccess.BLL.attachment();
if (bll.Add(model) <= 0)
{
strAttachmentId = null;
return false;
}
return true;
}
下载附件:
/// <summary>
/// 下载附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(tbAttachment.Text))
{
return;
}
//保存对话框
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "下载附件";
saveFileDialog.Filter = "所有文件|*.*";
saveFileDialog.FileName = tbAttachment.Text.Trim();
saveFileDialog.RestoreDirectory = true;
if ((bool)saveFileDialog.ShowDialog().GetValueOrDefault())
{
//三层架构 访问数据库代码
DBAccess.BLL.attachment aBll = new DBAccess.BLL.attachment();
DBAccess.Model.attachment modelAt = aBll.GetModel(m_ModelProblemorder.AttachmentId);
//将数据库中的二进制转换为文件
FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write);
fs.Write(modelAt.Content, 0, modelAt.Content.Length);
fs.Flush();
fs.Close();
MessageBox.Show("下载成功!", "提示信息");
}
}
以上代码是上传,下载附件的主要代码,仅供参考~
上传附件:
/// <summary>
/// 上传附件
/// </summary>
/// <param name="filePath">上传文件路径</param>
/// <param name="strAttachmentId">返回附件ID</param>
/// <returns>true :上传成功 ; false :上传失败</returns>
private bool UploadAttachment(string filePath, out string strAttachmentId)
{
strAttachmentId = null;
if (string.IsNullOrEmpty(filePath))
{
return false;
}
//截取路径下的文件名
int index = filePath.LastIndexOf(@"\");
string fileName = string.Empty;
if (index > 0)
{
fileName = filePath.Substring(index + 1, filePath.Length - index - 1);
}
//将附件内容转换成二进制信息
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] bufContent = new byte[stream.Length];
stream.Read(bufContent, 0, Convert.ToInt32(stream.Length));
stream.Flush();
stream.Close();
//三层架构 访问数据库代码
DBAccess.Model.attachment model = new DBAccess.Model.attachment();
strAttachmentId = Guid.NewGuid().ToString("D");
model.Id = strAttachmentId;
model.Name = fileName;
model.Content = bufContent;
model.UploadTime = DateTime.Now;
DBAccess.BLL.attachment bll = new DBAccess.BLL.attachment();
if (bll.Add(model) <= 0)
{
strAttachmentId = null;
return false;
}
return true;
}
下载附件:
/// <summary>
/// 下载附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(tbAttachment.Text))
{
return;
}
//保存对话框
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "下载附件";
saveFileDialog.Filter = "所有文件|*.*";
saveFileDialog.FileName = tbAttachment.Text.Trim();
saveFileDialog.RestoreDirectory = true;
if ((bool)saveFileDialog.ShowDialog().GetValueOrDefault())
{
//三层架构 访问数据库代码
DBAccess.BLL.attachment aBll = new DBAccess.BLL.attachment();
DBAccess.Model.attachment modelAt = aBll.GetModel(m_ModelProblemorder.AttachmentId);
//将数据库中的二进制转换为文件
FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write);
fs.Write(modelAt.Content, 0, modelAt.Content.Length);
fs.Flush();
fs.Close();
MessageBox.Show("下载成功!", "提示信息");
}
}
以上代码是上传,下载附件的主要代码,仅供参考~
相关文章推荐
- C# 多文件与二进制互转数据库写入读出(上传文件二进制方式到DB中,下载DB中的二进制文件到本地)
- 关于集成第三方office的sdk产品,采用servlet方式将数据库表BLOB字段文件下载与二进制文件上传到blob
- 将上传文件以二进制形式存入数据库中,并下载数据库中的二进制数据生成对应的文件
- C# 单文件与二进制互转数据库写入读出(上传文件二进制方式到DB中,下载DB中的二进制文件到本地)
- 将上传文件以二进制形式存入数据库中,并下载数据库中的二进制数据生成对应的文件
- 上传下载保存到数据库的image字段中的文件
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
- 简单二进制上传下载文件
- PHP文件上传,下载,Sql工具类!
- <JAVA,hibernate>从数据库中下载二进制文件并存到指定位置,把本地文件上传到数据库指定的字段中
- VC2010 ADO 写入二进制数据到数据库 下载二进制数据到文件
- 文件上传入数据库&从数据库中下载文件(转载)
- 上传备份ms sqlserver数据库文件
- XUtils3的使用(Get,Post,断点下载,上传文件,数据库,bitmap的下载与缓存)
- PDF 以二进制存入数据库 上传,读取,下载
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- python json及mysql——读取json文件存sql、数据库日期类型转换、终端操纵mysql及python codecs读取大文件问题
- input file 文件上传下载 查询数据库数据并导出Excel
- 上传文件到数据库,然后下载文件