【问题标题】:How to retrieve the contents of file and store it in binary format in database如何检索文件的内容并将其以二进制格式存储在数据库中
【发布时间】:2020-05-25 10:08:37
【问题描述】:

我正在使用 html 标签制作文件上传器。我的表由 id(Primary Key)、Name varchar(50)、ContentType(显示文件的扩展名)和 Data varbinary(Max) 组成,它将存储文件的内容。下面是我的html:

     <tr>
     <td class="label" style="width:15%">
     Upload File
     </td>
     <td class="description" >
     <input type="file" id="FileUpload1" class="largeTextField" multiple="multiple"   
     style="width:260px;"/>
     <input type="button" id="btnUpload" value="Upload"  onclick="UploadFile()" />
     </td>
     <div class="validator" id="txtUploadFileVld" style="display: none">
     *</div>
     </tr>

和javascript函数UploadFile():

    function UploadFile() {

    var filename = $('input[type=file]').val().split('\\').pop();
    var filePath = $('#FileUpload1').val();
    var contenttype = $("#FileUpload1").val().split('.').pop();
    var AJAX = new AJAXsupport();
    AJAX.resetVar();
    AJAX.addData('id', id);
    AJAX.addData('Name', $('#FileUpload1').val().split('\\').pop());
    AJAX.addData('ContentType', $('#FileUpload1').val().split('.').pop());

    AJAX.addData('CLDone', 'UploadFile');
    var sucSave = function () {
        alert(AJAX.getMessage())



        }
    customSave(AJAX, sucSave);
     }

我的文件名和内容类型已正确保存在数据库中。但我不知道如何检索文件的内容并将其保存在我的数据库中。该文件将以二进制格式保存,因为我的表中有数据类型 varbinary。我该怎么做?

【问题讨论】:

    标签: c# asp.net ajax database


    【解决方案1】:

    试试下面的代码:

        string strQuery = "select Name, ContentType, Data from tblFiles where id=@id";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
        DataTable dt = GetData(cmd);
    
        if (dt != null)
        {
            download(dt);
        }
    
        private void download (DataTable dt)
        {
            Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
    
            Response.Buffer = true;
            Response.Charset = "";
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = dt.Rows[0]["ContentType"].ToString();
            Response.AddHeader("content-disposition", "attachment;filename="
    
            + dt.Rows[0]["Name"].ToString());
    
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
    }
    
    private DataTable GetData(SqlCommand cmd)
    {
        DataTable dt = new DataTable();
        String strConnString = System.Configuration.ConfigurationManager
        .ConnectionStrings["conString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
    
        try
        {
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            return dt;
        }
        catch
        {
            return null;
        }
        finally
        {
            con.Close();
            sda.Dispose()
            con.Dispose();
       }
    }
    

    【讨论】:

    • 我已经添加了 GetData() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2011-12-05
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多