存入数据库过程,采用asp:FileUpload控件进行文件上传:
int intDocLen = FileUpload1.PostedFile.ContentLength;
byte[] Docbuffer = new byte[intDocLen];
Stream objStream;
objStream = FileUpload1.PostedFile.InputStream;
objStream.Read(Docbuffer, 0, intDocLen);
string FileID = DateTime.Now.ToString("yyyyMMddHHmmssfff");
sqlConnection BooksConn = new sqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DefaultConnection"].ToString());
sqlCommand cmdUploadDoc = new sqlCommand("FileSystem_UploadFile", BooksConn);
cmdUploadDoc.CommandType = CommandType.StoredProcedure;
cmdUploadDoc.Parameters.Add("@ID", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@FileName", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@FileImageName", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@FileType", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@FileState", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@FileDescription", sqlDbType.VarChar);
cmdUploadDoc.Parameters.Add("@FileData", sqlDbType.Image);
cmdUploadDoc.Parameters.Add("@UpdateTime", sqlDbType.DateTime);
cmdUploadDoc.Parameters.Add("@UpdateUser", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters.Add("@Mark", sqlDbType.VarChar);
cmdUploadDoc.Parameters.Add("@BindID", sqlDbType.VarChar, 50);
cmdUploadDoc.Parameters["@ID"].Value = FileID;
cmdUploadDoc.Parameters["@FileName"].Value = FileName.Text;
cmdUploadDoc.Parameters["@FileImageName"].Value = FileUpload1.FileName;
cmdUploadDoc.Parameters["@FileType"].Value = FileType.SelectedValue.ToString();
cmdUploadDoc.Parameters["@FileState"].Value = "新建";
cmdUploadDoc.Parameters["@FileDescription"].Value = Description.Text;
cmdUploadDoc.Parameters["@FileData"].Value = Docbuffer;
cmdUploadDoc.Parameters["@UpdateTime"].Value = DateTime.Now;
cmdUploadDoc.Parameters["@UpdateUser"].Value = Context.User.Identity.Name;
cmdUploadDoc.Parameters["@Mark"].Value = Remark.Text;
cmdUploadDoc.Parameters["@BindID"].Value = BindID.Text;
BooksConn.open();
cmdUploadDoc.ExecuteNonQuery();
BooksConn.Close();
ErrorMessage.Text = "添加文件成功!";
上传文件需要配合数据库存储过程,建立存储过程sql代码如下:
CREATE PROCEDURE FileSystem_UploadFile
@ID varchar(50),
@FileName varchar(50),
@FileImageName varchar(50),
@FileType varchar(50),
@FileState varchar(50),
@FileDescription varchar(max),
@FileData image,
@UpdateTime Datetime,
@UpdateUser varchar(50),
@Mark varchar(max),
@BindID varchar(50)
AS
INSERT FileSystem(ID,FileName,FileImageName,FileType,FileState,FileDescription,FileData,UpdateTime,UpdateUser,Mark,BindID)
VALUES (@ID,@FileName,@FileImageName,@FileType,@FileState,@FileDescription,@FileData,@UpdateTime,@UpdateUser,@Mark,@BindID)
GO
文件取出并下载过程:
byte[] Docbuffer;
string strsql = "SELECT * FROM FileSystem WHERE (ID = '" + Request["FileID"].ToString() + "')";
sqlConnection BooksConn = new sqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DefaultConnection"].ToString());
sqlCommand cmdDownloadDoc = new sqlCommand(strsql, BooksConn);
cmdDownloadDoc.Connection.open();
using (sqlDataReader sdr = cmdDownloadDoc.ExecuteReader())
{
if (sdr.Read())
{
String strFileName = sdr["FileImageName"].ToString();
String savePath = Server.MapPath("./Temp/" + strFileName); //服务器路径转换为物理路径
Docbuffer = (byte[])sdr["FileData"];
using (FileStream fs = new FileStream(savePath, FileMode.OpenorCreate, FileAccess.Write))
{
fs.Write(Docbuffer, 0, Docbuffer.Length);
}
//判断文件类型并做下载处理
string[] stmp = strFileName.Split('.');
string FilePost = stmp[stmp.Length - 1];//取扩展名
switch (FilePost)
{
case "pdf"://PDF文件
Response.ContentType = "application/PDF";
break;
case "doc":
Response.ContentType = "application/msword";
break;
case "xls":
Response.ContentType = "application/vnd.ms-excel";
break;
case "jpg":
Response.ContentType = "image/jpeg";
break;
case "gif":
Response.ContentType = "image/gif";
break;
case "png":
Response.ContentType = "image/png";
break;
case "txt":
Response.ContentType = "text/plain";
break;
default:
Response.ContentType = "application/octet-stream";
break;
}
response.addheader("Content-disposition", "filename=" + strFileName);//指定文件名
Response.WriteFile(savePath);//写入客户端
Response.Flush();//客户更新
Response.Close();//写入关闭
//Session.Remove("Report");//移除Report Session
}
else
{
Response.Write("<script>window.alert('文件不存在!')</script>");
Response.End();
}
}
cmdDownloadDoc.Connection.Close();
原文地址:https://blog.csdn.net/xdlijinming/article/details/118468169
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。