Как извлечь содержимое файла и сохранить его в двоичном формате в базе данных - PullRequest
0 голосов
/ 10 февраля 2020

Я делаю загрузчик файлов, используя теги html. Моя таблица состоит из id (первичный ключ), имени 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. Как я могу это сделать?

1 Ответ

0 голосов
/ 10 февраля 2020

Попробуйте следующий код:

    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();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...