Gridview con il download e la visualizzazione di file pdf in asp.net &#c #

Tutto funziona bene, fino a quando il file pdf deve essere in grado di essere cliccato n viewd sul browser.Se il link di download funziona perfettamente.

Mia griglia…

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText = "No files uploaded">
<Columns>
    <asp:BoundField DataField="FileDate" HeaderText="Dated" />
    <asp:BoundField DataField="FileName" HeaderText="File Name" />
    <asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%#   Eval("FilePath") %>' runat="server" OnClick = "DownloadFile" ></asp:LinkButton>
             <asp:LinkButton ID="btnOpen" Text="View" Font-Bold="true" runat="server" onclick="btnpdf_Click" /></asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>
        </Columns>
    </asp:GridView>

Mia classe

public class Thing
{

    public string FilePath { get; set; }
    public string FileName { get; set; }
    public string FileDate { get; set; }
}

Mio PageLoad

 string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/"));
        List<Thing> lst = new List<Thing>();
        foreach (string filePath in filePaths)
        {
            lst.Add(new Thing() 
            { 

                //FileDate = File.GetCreationTime(filePath).ToShortDateString(),
                FileDate = Path.GetFileName(filePath.Substring(0,35)),
                FileName = Path.GetFileName(filePath.Substring(36)), 
                FilePath = filePath 
            });
        }
        GridView1.DataSource = lst;
        GridView1.DataBind();

Mio pulsante di download

string filePath = (sender as LinkButton).CommandArgument;
    Response.ContentType = ContentType;
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath.Substring(36)));
    Response.WriteFile(filePath);
    Response.End();

Mio pdfview

string filePath = (sender as LinkButton).CommandArgument;
    Response.ContentType = "Application/pdf";
    //Get the physical path to the file.
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath.Substring(36)));
    //Write the file directly to the HTTP content output stream.
    Response.WriteFile(filePath);
    Response.End();

Che ancora non riesco a visualizzare il file pdf in un browser…pls help

InformationsquelleAutor shaiToro | 2014-11-14



3 Replies
  1. 1
     <asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%#Eval("notice")%>' runat="server" onclick = "lnkDownload_Click" ></asp:LinkButton>
            &nbsp;&nbsp;
             <asp:LinkButton ID="btnOpen" Text="View" CommandArgument='<%#Eval("notice")%>' Font-Bold="true" runat="server" onclick = "btnOpen_Click"></asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>
        protected void lnkDownload_Click(object sender, EventArgs e)
        {
            string filePath = (sender as LinkButton).CommandArgument;
            Response.ContentType = ContentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath.Substring(0)));
            Response.WriteFile(filePath);
            Response.End();
        }
    
        protected void btnOpen_Click(object sender, EventArgs e)
        {
            string filePath = (sender as LinkButton).CommandArgument;
            Response.ContentType = "Application/pdf";
            //Get the physical path to the file.
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
            //Write the file directly to the HTTP content output stream.
            Response.Redirect(filePath);
            Response.End();
    
        }
    • Benvenuti a TANTO!!! Solo un frammento di codice non è una buona risposta. Si prega di provare a spiegare perché questo funziona e ciò che il richiedente ha sbagliato.
  2. 0

    Per il pdfview – modificare la Disposizione del Contenuto inline invece di attaccamento

    Response.AppendHeader("Content-Disposition", "inline; filename=" + Path.GetFileName(filePath.Substring(36)));
    • Ricevo un errore del server… startIndex non può essere maggiore della lunghezza della stringa.
    • Che sembra un problema con il tuo percorso.Substring(36) – se il percorso è più piccolo di 36 caratteri. Non ho idea perché metti che ad essere onesti.
    • il suo solo un test…solo bisogno di estrarre il nome del file dal nome del file è preceduto da una data. Mi sono fatto togliere la sottostringa di parte ma …l’Accesso al percorso ‘e\dirname\’ negato.
  3. 0

    Invece di aprire file PDF in altri browser, si apre in un pop-up.
    Nel pop-up aggiungere un iframe e dare il vostro file PDF percorso. Non c’è bisogno di spostare di Nuovo la finestra. Potete vedere in anteprima nella stessa finestra e quando si dà file PDF come fonte di iframe sarà per impostazione predefinita dare la possibilità di salvare e stampare.
    Buona fortuna.!

Lascia un commento