C# 使用c从sql server下载文件#

C# 使用c从sql server下载文件#,c#,sql,sql-server,download,C#,Sql,Sql Server,Download,我开发了一个应用程序、一个web应用程序和一个c#,文件上传在web应用程序中完成,下面是我的代码: protected void ImageButton2_Click(object sender, ImageClickEventArgs e) // upload documents to database { foreach (HttpPostedFile upFile in FileUpload1.PostedFiles) {

我开发了一个应用程序、一个web应用程序和一个c#,文件上传在web应用程序中完成,下面是我的代码:

 protected void ImageButton2_Click(object sender, ImageClickEventArgs e) // upload documents to database 
    {
        foreach (HttpPostedFile upFile in FileUpload1.PostedFiles)
        {

            // Read the file and convert it to Byte Array
            string filename = Path.GetFileName(upFile.FileName);
            string ext = Path.GetExtension(filename);
            string contenttype = String.Empty;


            //Set the contenttype based on File Extension
            switch (ext)
            {
                case ".doc":
                    contenttype = "application/vnd.ms-word";
                    break;
                case ".docx":
                    contenttype = "application/vnd.ms-word";
                    break;
                case ".xls":
                    contenttype = "application/vnd.ms-excel";
                    break;
                case ".xlsx":
                    contenttype = "application/vnd.ms-excel";
                    break;
                case ".jpg":
                    contenttype = "image/jpg";
                    break;
                case ".png":
                    contenttype = "image/png";
                    break;
                case ".gif":
                    contenttype = "image/gif";
                    break;
                case ".pdf":
                    contenttype = "application/pdf";
                    break;
                case ".rar":
                    contenttype = "application/rar";
                    break;
            }

            if (contenttype != String.Empty)
            {

                Stream fs = FileUpload1.PostedFile.InputStream;
                BinaryReader br = new BinaryReader(fs);
                Byte[] bytes = br.ReadBytes((Int32)fs.Length);

                //insert the file into database
                string strQuery = "insert into UploadFile(referencenumber, Name, ContentType, Data, id)" +
                   " values (@referencenumber, @Name, @ContentType, @Data, @id)";
                SqlCommand cmd = new SqlCommand(strQuery);
                cmd.Parameters.Add("@referencenumber", SqlDbType.VarChar).Value = disprefno.Text;
                cmd.Parameters.Add("@id", SqlDbType.VarChar).Value = 1;
                cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
                cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value
                  = contenttype;
                cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
                InsertUpdateData(cmd);
            }
        }
    }
    private Boolean InsertUpdateData(SqlCommand cmd)
    {
        //upload class
        String strConnString = System.Configuration.ConfigurationManager
        .ConnectionStrings["AIConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        try
        {
            lblUploadStat.Visible = true;
            con.Open();
            cmd.ExecuteNonQuery();
            return true;
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            return false;
        }
        finally
        {
            string myStringVariable1 = string.Empty;
            myStringVariable1 = "Documents Was Successfully Sent ";
            ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable1 + "');", true);
            lblUploadStat.Visible = false;
            con.Close();
            con.Dispose();
        }
    }

现在,我想通过我的c#应用程序从sql数据库中检索上传文件,我如何实现这一点呢?

我想,我添加了一个非常简单的代码版本:

using (SqlCommand cmd = new SqlCommand("select ContentType from UploadFile WHERE Id = 1"))
{
    con.Open();
    SqlDataReader obj = cmd.ExecuteReader();
    byte[] bytes = (byte [])obj.GetValue(0);
}

你试了什么?我很难想象你做了这一切,你不能将SELECT语句放入一个简单的C#应用程序中。旁注:对于扩展名为
*.xlsx
的文件,我在使用
应用程序/vnd.ms excel
时遇到了问题;我现在使用的内容类型是
application/vnd.openxmlformatsofcedocument.spreadsheetml.sheet
(对于
.docx
,我也使用
“application/vnd.openxmlformatsofcedocument.wordprocessingml.document
)对我不起作用,我必须在ExecuteReader之后添加
obj.Read();