Скачать файл из источника данных SQL с помощью веб-форм asp.net Gridview - PullRequest
0 голосов
/ 12 марта 2019

Я использую элемент управления Telerik RadGrid, а вместе с ним я использую GridAttachmentColumn, как рекомендовано в их документации для загрузки файлов, но я обнаружил, что что-то отсутствует, возможно, какой-то код позади?В документации говорится об отключении Ajax для загрузки и экспорта файлов, но не для загрузки?

Таблица SQL содержит UNC-путь, где эти файлы хранятся в общем сетевом ресурсе.Столбец «загрузка» указывает на правильные данные \ местоположение, путь к файлу становится гиперссылкой, но когда я нажимаю на нее, никаких действий не происходит.

Я также пытался использовать столбец гиперссылки, который, кажется, частично работает в IE, ноне на Chrome.Частично потому, что некоторые файлы загружаются, а некоторые отображаются на экране.Мне нужно загрузить их все вместе с решением, которое работает в обоих браузерах.

Вот код Grid:

 <telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="SqlDataSource1" Skin="WebBlue" AllowPaging="True">
<GroupingSettings CollapseAllTooltip="Collapse all groups"></GroupingSettings>
        <MasterTableView AutoGenerateColumns="False" DataSourceID="SqlDataSource1" NoDetailRecordsText="No attachments to display.">
            <DetailTables>
                <telerik:GridTableView runat="server" DataKeyNames="SessionId" DataSourceID="SqlDataSource2" AllowPaging="False" PageSize="5" NoDetailRecordsText="No attachment to display.">
                    <Columns>
                        <telerik:GridAttachmentColumn DataSourceID="SqlDataSource2" HeaderText="Download" AttachmentDataField="DocName" AttachmentKeyFields="1" FileNameTextField="DocName" DataTextField="Path" UniqueName="Attachments" MaxFileSize="1048576">
                        </telerik:GridAttachmentColumn>
                    </Columns>
                </telerik:GridTableView>
            </DetailTables>
            <CommandItemSettings ShowAddNewRecordButton="False" ShowExportToExcelButton="True" ShowExportToPdfButton="True" ShowExportToWordButton="True" ShowRefreshButton="False" />
            <Columns>
                <telerik:GridBoundColumn DataField="SessionId" FilterControlAltText="Filter SessionId column" HeaderText="SessionId" SortExpression="SessionId" UniqueName="SessionId" Visible="False">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Ticket Number" FilterControlAltText="Filter TicketNumber column" HeaderText="Ticket Number" SortExpression="TicketNumber" UniqueName="TicketNumber">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Title" FilterControlAltText="Filter Title column" HeaderText="Title" SortExpression="Title" UniqueName="Title">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Description" FilterControlAltText="Filter Description column" HeaderText="Description" SortExpression="Description" UniqueName="Description" Visible="False">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="AffectedUser" FilterControlAltText="Filter AffectedUser column" HeaderText="AffectedUser" SortExpression="AffectedUser" UniqueName="AffectedUser">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="AssignedTo" FilterControlAltText="Filter AssignedTo column" HeaderText="AssignedTo" SortExpression="AssignedTo" UniqueName="AssignedTo">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Owner" FilterControlAltText="Filter Owner column" HeaderText="Owner" SortExpression="Owner" UniqueName="Owner">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Location" FilterControlAltText="Filter Location column" HeaderText="Location" SortExpression="Location" UniqueName="Location">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Resolution" FilterControlAltText="Filter Resolution column" HeaderText="Resolution" SortExpression="Resolution" UniqueName="Resolution">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Close Date" DataType="System.DateTime" FilterControlAltText="Filter CloseDate column" HeaderText="Close Date" SortExpression="CloseDate" UniqueName="CloseDate">
                </telerik:GridBoundColumn>
            </Columns>
        </MasterTableView>

<FilterMenu RenderMode="Lightweight"></FilterMenu>

<HeaderContextMenu RenderMode="Lightweight"></HeaderContextMenu>
</telerik:RadGrid>

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Решил проблему с другим подходом.

  • Изменено на HyperLinkColumn
  • Использовано следующим образом DataNavigateUrlFormatString="~\filedownload_6?FileName={0}"
  • Добавлена ​​«Страница загрузки»
  • Создан виртуальный каталог на сайтев IIS, где запущено приложение, которое указывает на общий доступ к файлам и использует его в методе Server.MapPath.(~ / Файлы / в коде)

https://support.microsoft.com/en-ca/help/308150/how-to-create-a-virtual-directory-on-an-existing-web-site-to-a-folder

Код страницы загрузки файла:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DBSearchSolution
{
    public partial class filedownload_6 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //string filename = Request.QueryString["29215_1_0_image001.png"].ToString();
            string filename = Request.QueryString["FileName"].ToString();
            Response.ContentType = "application/octet-steam";
            Response.AppendHeader("content-disposition", "attachment; filename=" + filename);
            Response.TransmitFile( Server.MapPath("~/Files/" + filename));
            Response.End();
        }


    }
}
0 голосов
/ 13 марта 2019

Я предполагаю, что Telerik не предсказывал использование пути UNC для этого элемента управления, похоже, вам нужно добавить несколько слешей и отформатировать их правильно, чтобы сделать ссылку полностью кликабельной.

file://///server/path/to/file.txt

Даже при этом он может быть не полностью совместим с разными браузерами. Доступ к локальному файлу с веб-сайта представляет собой угрозу безопасности.

Связывание UNC / сетевого диска на html-странице

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