您的位置:首页 > 数据库

读取文件以进制方式存至数据库中以及读取

2009-10-23 07:43 363 查看
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;
using System.Threading;

namespace ReadFileToDb
{
public partial class frmMain : Form
{
Db db = new Db();
public frmMain()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}

private void btnSelectFileDir_Click(object sender, EventArgs e)
{
folderBrowser.ShowDialog();
txtFileDir.Text = folderBrowser.SelectedPath;
}

private void btnExecute_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtConn.Text.Trim()))
{
MessageBox.Show(null, "请填写数据库连接字符串!", "操作错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (string.IsNullOrEmpty(txtFileDir.Text.Trim()))
{
MessageBox.Show(null, "请选择文件目录!", "操作错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

Thread th = new Thread(new ThreadStart(Execute));
th.Start();
}

private void Execute()
{
string[] docfiles = Directory.GetFiles(txtFileDir.Text.Trim(), "*.doc");
btnExecute.Enabled = false;
int i = 1;
lblTotal.Text = "DOC总计:" + docfiles.Length.ToString();
string filename = "";
string cno = "";
string filetype = "application/msword";

foreach (string doc in docfiles)
{
filename = doc.Replace(txtFileDir.Text.Trim(), "").Replace("/", "").Replace("//", "");
cno = filename.Replace(".doc", "");
int LibID = db.GetCount(txtConn.Text.Trim(), "select JournalID from [ToLegal_Journal1012] where cNO='" + cno + "'");
//string filecontent = GetFileData(doc);
string strSql = @"
declare @FileID int
select @FileID = max(FileID) from LibraryFile
if @FileID is null
set @FileID=1
else
set @FileID=@FileID+1
insert into LibraryFile(FileID,rowid,LibID,DateUpload,FileType,FileMatter) values (@FileID,newid(),{0},getdate(),'{1}',null)
update LibraryFile set FileMatter=(SELECT * FROM OPENROWSET(BULK '{2}', SINGLE_BLOB)AS x) where FileID=@FileID";
strSql = string.Format(strSql, LibID, filetype, doc);
int result = db.ExeSql(txtConn.Text.Trim(), strSql);

lblCompleted.Text = "已处理:" + i.ToString();
i = i + 1;
}

string[] pdffiles = Directory.GetFiles(txtFileDir.Text.Trim(), "*.pdf");
i = 1;
lblTotal.Text = "PDF总计:" + docfiles.Length.ToString();
filetype = "application/pdf";

foreach (string pdf in pdffiles)
{
filename = pdf.Replace(txtFileDir.Text.Trim(), "").Replace("/", "").Replace("//", "");
cno = filename.Replace(".pdf", "");

int LibID = db.GetCount(txtConn.Text.Trim(), "select JournalID from [ToLegal_Journal1012] where cNO='" + cno + "'");
//string filecontent = GetFileData(pdf);
string strSql = @"
declare @FileID int
select @FileID = max(FileID) from LibraryFile
if @FileID is null
set @FileID=1
else
set @FileID=@FileID+1
insert into LibraryFile(FileID,rowid,LibID,DateUpload,FileType,FileMatter) values (@FileID,newid(),{0},getdate(),'{1}',null)
update LibraryFile set FileMatter=(SELECT * FROM OPENROWSET(BULK '{2}', SINGLE_BLOB)AS x) where FileID=@FileID";
strSql = string.Format(strSql, LibID, filetype, pdf);
int result = db.ExeSql(txtConn.Text.Trim(), strSql);

lblCompleted.Text = "已处理:" + i.ToString();
i = i + 1;
}

MessageBox.Show(null, "处理完成!", "处理完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
btnExecute.Enabled = true;
}

private byte[] GetFileData(string filepath)
{
FileStream fs = new FileStream(filepath, FileMode.Open);
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;
}

//switch (dataread("document_type"))
//          {
//              case "doc":
//                  Response.ContentType = "application/msword";
//              case "swf":
//                  Response.ContentType = "application/x-shockwave-flash";
//              case "xls":
//                  Response.ContentType = "application/vnd.ms-excel";
//              case "gif":
//                  Response.ContentType = "image/gif";
//              case "Jpg":
//                  Response.ContentType = "image/jpeg";
//          }
}
}


通过asp方式下载

<%
Response.Buffer = true
Response.Clear
rowId = ToGuid(request("rowId"))
if rowId <> GuidEmpty then
sql = "EXECUTE sp_executesql N'"
sql = sql & "SELECT f.FileID, f.rowId, f.FileType, j.Topic_CN, f.FileMatter FROM LibraryFile f INNER JOIN Legal_Journal j ON f.LibID=j.JournalID WHERE (f.rowId=@rowId)"
sql = sql & "', N'@rowId uniqueidentifier', @rowId='"&rowId&"'"
rs.open sql,conn,0,1
if not rs.eof then
if rs("FileType").value = "application/msword" then
Response.AddHeader "Content-Disposition","attachment;filename="&trim(rs("Topic_CN").value)&".doc"
else
Response.AddHeader "Content-Disposition","attachment;filename="&trim(rs("Topic_CN").value)&".pdf"
end if
Response.CharSet = "GB2312"
Response.ContentType = rs("FileType").value
Response.BinaryWrite(rs("FileMatter").value)
Response.Flush
end if
rs.close
end if
closedatabase
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐