Каков наилучший способ для хранения файлов PDF на сервере SQL из приложения asp.net MVC 2? - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь сохранить PDF-файлы на сервере SQL. Я использую приложение asp.net mvc 2 с сервером sql? Можете ли вы показать мне несколько ссылок на примеры кода?

1 Ответ

4 голосов
/ 23 июня 2011

Ответ будет во многом зависеть от того, какую технологию вы используете для доступа к этому SQL Server, используете ли вы ORM и т. Д. Поскольку вы не предоставили такую ​​информацию в своем вопросе, позвольте мне проиллюстрировать примеркак это сделать, используя обычный ADO.NET.

Вы можете начать с формы:

<% using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
    <label for="file">Select a pdf file:</label>
    <input type="file" name="file" id="file" />
    <input type="submit" value="Upload" />
<% } %>

и действия контроллера для обработки отправки этой формы:

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var extension = Path.GetExtension(fileName);
        var document = new byte[file.InputStream.Length];
        file.InputStream.Read(document, 0, document.Length);
        if (string.Equals(".pdf", extension, StringComparison.OrdinalIgnoreCase))
        {
            using (var conn = new SqlConnection(SomeConnectionString))
            using (var cmd = conn.CreateCommand())
            {
                conn.Open();
                cmd.CommandText = "INSERT INTO Documents (document) VALUES (@document);";
                cmd.Parameters.Add("@document", SqlDbType.Binary, 20).Value = document;
                cmd.ExecuteNonQuery();
            }
        }
    }
    return View();
}

Конечно, часть SQL должна быть выведена в отдельный репозиторий, чтобы избежать загромождения действия контроллера таким кодом.Кроме того, если вы используете SQL Server 2008, вы можете взглянуть на новый тип FILESTREAM , который более приспособлен к такого рода вещам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...