微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net把文件存入SqlServer数据库,并读取出来下载的过程

存入数据库过程,采用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 举报,一经查实,本站将立刻删除。

相关推荐