上传文件以二进制存储到数据库中
一:上传 (把文件上传到数据库中image类型的字段中去了)
public void upload()
{
Stream objFs;
objFs = uploadFile.PostedFile.InputStream;
BinaryReader objBr = new BinaryReader(objFs);
byte[] bytFile = objBr.ReadBytes((int)objFs.Length);
//文件内容
model.DocContent = bytFile;
//归档单位
model.FilingUnit = this.ddlFilingUnit.SelectedValue.ToString().Trim();
//归档号
model.FilingNo = this.txtFilingNo.Value.Trim();
//文件名(后台控制:用户留空时则录入原文件名)
if(this.txtDocName.Value.ToString().Trim() == "" || this.txtDocName.Value.ToString().Trim() == null)
{
int start = uploadFile.PostedFile.FileName.LastIndexOf("\\");
int end = uploadFile.PostedFile.FileName.LastIndexOf(".");
model.DocName = uploadFile.PostedFile.FileName.Substring(start+1, end-start-1);
}
else
{
model.DocName = this.txtDocName.Value.Trim();
}
//获取文件后缀名:1、获取初始文件名
string tempStr = this.uploadFile.PostedFile.FileName.ToString();
//2、取得文件名中最后一个"."的索引
int i = tempStr.LastIndexOf(".") + 1;
//3、获取文件扩展名并转为小写
model.DocSuffix = tempStr.Substring(i).ToLower();
//文件大小
model.DocSize = this.uploadFile.PostedFile.ContentLength;
//MIME类型
model.ContentType = this.uploadFile.PostedFile.ContentType;
new RecordsMgtBll().AddDoc(model);
}
二:下载 新建一个用于输出文件的页面(点击下载的时候就跳转到此页面并且传要下载的文件ID)
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
_DocId = Request.QueryString["DocId"];
ViewState["_DocId"] = _DocId;
}
string sql="SELECT * FROM b_bridge_doc WHERE DocId='" + ViewState["_DocId"].ToString() + "' ";
SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationSettings.
AppSettings["SqlServerConnectionString"]);
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if(dr.Read())
{
Response.Clear();
Response.AddHeader("Content-Type", dr["ContentType"].ToString());
string fileName = dr["DocName"].ToString() + "." + dr["DocSuffix"].ToString();
Response.AddHeader("Content-Disposition", "attachment; filename=" +
HttpUtility.UrlEncode( fileName));
Response.Flush();
Response.BinaryWrite((byte[])dr["DocContent"]);
}
dr.Close();
connection.Close();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述