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 %>