读取文件以进制方式存至数据库中以及读取
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 %>
相关文章推荐
- Java_JDBC连接数据库_使用读取配置文件的方式
- [转] 从数据库中读取图片并导入Excel文件,C#方式
- Servlet 读取资源文件的方式,以及资源文件的更新
- Unity3D如何读取保存XML,以及用U3D内置方式保存文件
- springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
- java 用单态方式实现数据库配置文件读取
- net9:图片文件转换成二进制流存入SQL数据库,以及从数据库中读取二进制流输出文件
- JavaWeb之JDBC(二)采用读取配置文件方式编写JDBC的工具类,获取数据库的连接
- android读取文件时乱码的问题,以及eclipse中java编码查看方式
- SpringBoot读取配置文件的两种方式以及自定义配置文件的读取
- C#连接数据库_使用读取配置文件的方式
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- PHP 数据库mysql链接,以及读取数据内容方式详解
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- 数据库连接的两种实现方式(读取配置文件)——DBCP&C3P0;DBCP实现连接代码,C3P0实现连接代码——包含完整代码
- 以Android L读取系统所有logcat并写入文件为例分析Android 以添加系统进程的方式申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限
- PHP将二进制文件存入数据库以及从数据库中读取二进制文件
- 【C#】用C#通过读取数据库方式读取CSV文件
- python读取二进制文件以及二进制、十进制、16进制间的转化
- 以解耦方式连接数据库-通过读取配置文件