Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857

    redirect a file txt senza che si apra nel browser

    Sostanzialmente dopo aver generato via codice il file vorrei che all'utente venisse proposto il download dello stesso anzichè fare il redirect al file con conseguente apertura del txt nel browser (e problemi coi caratteri e blablabla)
    Si può fare?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    si, con un vecchio codice (VB) funzionava:

    codice:
            Response.Expires = -1
            Dim strPath As String = Me.Server.MapPath("nomefile.txt")
            Dim file As FileInfo = New FileInfo(strPath)
            If file.Exists Then
                Response.Clear()
                Response.AddHeader("Content-Disposition", "attachment; filename=""" & file.Name & """")
                Response.AddHeader("Content-Length", file.Length.ToString())
                Response.ContentType = "application/octet-stream"
    
    
                ' Spara il file al client !
                Response.TransmitFile(strPath)
                Response.End()
            Else
                Response.Write("Impossibile scaricare il file.")
            End If

    non l'ho provato con i nuovi browser/framework, vedi un po'

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    Sto cominciado a provare del sentimento per te
    Grazie
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4

  5. #5
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    Faccio ricorso a tutta la leggiadria e al sorriso che riesco ad esprimere in questo momento mmmma scusa, secondo te, che motivo ci potrebbe essere per il fatto che il tuo codice funziona perfettamente se lo metto nell'evento load di una pagina ed invece non funziona se lo metto nell'evento click di un linkbutton?
    (giornata di mmm... ho tamponato un Tiguan, maremma maiala)
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    Probabilmente è perche' le proprieta' (l'header ed il ContentType in questo caso) dell'oggetto implicito Response non puoi cambiarle quando ti pare nel ciclo di vita della pagina..devi farlo quando la pagina nasce. Forse.

    Ma se non erro, io lo feci al button_click e funzionava...forse è cambiato qualcosa nei framework nel frattempo.

    tu sei sicuro di cio' che dici ?
    Ultima modifica di djciko; 26-01-2018 a 17:46

  7. #7
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    ...non fare di quese domande ad uno che ha appena tamponato un suv: certo che sono sicuro
    Convengo sulla motivazione dell'header di pagina, ho risolto con un redirect ad altra pagina.
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    proprio per lo shock del tamponamento chiedevo, mica mettevo in dubbio la tua capacita' di coder


    comunque, io ho fatto un bottone con il suo click, e funziona. Framework 4.0, visual studio 2017:

    ASPX:

    codice:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Download_Forzato.aspx.cs" Inherits="STUDIO3._0.Forum_HTML.Download_Forzato" %>
    
    
    <!DOCTYPE html>
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Button ID="bt" Text="scarica il file" runat="server" OnClick="bt_Click" />
            </div>
        </form>
    </body>
    </html>


    C#:

    codice:
    public partial class Download_Forzato : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                 // vuoto
            }
    
    
            protected void bt_Click(object sender, EventArgs e)
            {
                Response.Expires = -1;
    
    
                String strPath = Server.MapPath("file_download.txt");
                System.IO.FileInfo file = new System.IO.FileInfo(strPath);
    
    
                if(file.Exists)
                {
                    Response.Clear();
                    Response.AddHeader("Content-Disposition", "attachment; filename='" + file.Name + "'");
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    Response.ContentType = "application/octet-stream";
                    Response.TransmitFile(strPath);
                    Response.End();
                 }
                else
                {
                    Response.Write("Impossibile scaricare il file.");
                }
            }
        }
    mi fa scaricare il file "file_download.txt" presente nella stessa cartella

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    l'ho provato con Chrome.

    quindi l'ipotesi dell'oggetto Reponse non è valida.

    posta il tuo codice
    Ultima modifica di djciko; 26-01-2018 a 19:25

  10. #10
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,857
    proprio per lo shock del tamponamento chiedevo, mica mettevo in dubbio la tua capacita' di coder
    spara pure, la mia autostima oggi è più in picchiata dei bitcoin

    linkbutton senza definizione del navigateurl, non button (peraltro dovrebbe essere la stessa cosa): nel click genero il file e poi lo passo alla funzione ridirigi(nomefile)

    La funzione è più o meno la tua, a parte che io ho un percorso handmade
    codice:
    Protected Sub ridirigi(ByVal nomefile As String)
            Response.Expires = -1
            Dim filepath As String = HttpRuntime.AppDomainAppPath & "Uploads\Temp\" & nomefile
    
            Dim file As FileInfo = New FileInfo(filepath)
            If file.Exists Then
                Response.Clear()
                Response.AddHeader("Content-Disposition", "attachment; filename=""" & file.Name & """")
                Response.AddHeader("Content-Length", file.Length.ToString())
                Response.ContentType = "application/octet-stream"
    
                Response.TransmitFile(filepath)
                Response.End()
            Else
                Response.Write("Impossibile scaricare il file.")
            End If
        End Sub
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.