Download di un file utilizzando un oggetto behaviour o javascript.

lunedì 24 settembre 2007 - 07.30

mattecapelli Profilo | Newbie

Ciao a tutti!
Vi pongo un quesito
Ho una pagina di risultati di ricerca che mostra una lista di files.
Il link diretto al file, se cliccato, apre il documento con un visualizzatore integrato in IE. Per nascondere il link diretto uso un javascript.
Ora necessito di un pulsante di download che mi permetta di scaricare il file poichè nel tasto destro la funzione "salva con nome" restituisce un errore.

Ho provato ad utilizzare questa funzione behaviour di IE che richiama il salvataggio
<HTML XMLNS:MSIE>
<MSIE:DOWNLOAD ID="oDownload" STYLE="behavior:url(#default#download)" />

ma non riesco a farla funzionare bene...

questa è la pagina di prova che ho creato per utilizzare l'oggetto

<HTML XMLNS:MSIE>
<MSIE:DOWNLOAD ID="oDownload" STYLE="behavior:url(#default#download)" />

<script language =javascript>

function onDownloadDone(s) { alert (s); }


</script>

<head>
<title>Download</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">
<A HREF="javascript:oDownload.startDownload('43038.pdf',onDownloadDone('salvataggio avvenuto'))">salva</A>

</form>

</body>
</html>

Qualcuno sa dove sbaglio nell'utilizzo dell'oggetto?
o eventualmente un'alternativa per ottenere la finestra di dialogo del salvataggio?

Grazie in anticipo.
Ciao
Matteo

Brainkiller Profilo | Guru

>Il link diretto al file, se cliccato, apre il documento con un
>visualizzatore integrato in IE. Per nascondere il link diretto
>uso un javascript.

Prima di rispondere spiegami un po' di cose.

Vuoi nascondere il link per quale motivo ?

Seconda cosa, se clicchi sul link si apre un visualizzatore di IE solo se l'utente ha un visualizzatore installato sul PC. Esempio se tu clicchi su un PDF ma non hai Acrobat ti appare la finestra di Salva file con nome. Inoltre c'è anche un'impotazione su Windows che consente anche avendo il visualizzatore di non farlo partire ma far aprire la finestra di Salva con nome.

Fammi sapere poi vediamo come fare.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

mattecapelli Profilo | Newbie



> Vuoi nascondere il link per quale motivo ?

I responsabili della qualità della mia azienda hanno voluto bloccare l'invio di link a file tramite la posta aziendale. L'utilizzo del javascript rende tali link impossibili da utilizzare senza essere loggati sulla intranet

>Seconda cosa, se clicchi sul link si apre un visualizzatore di IE solo se l'utente ha un >visualizzatore installato sul PC. Esempio se tu clicchi su un PDF ma non hai Acrobat ti >appare la finestra di Salva file con nome. Inoltre c'è anche un'impotazione su Windows che >consente anche avendo il visualizzatore di non farlo partire ma far aprire la finestra di >Salva con nome.

Per vedere i files è stato installato un visualizzatore che si integra in IE e li apre nella finestra.
Alcuni utenti devono poterlo vedere, altri possono anche scaricarlo, altri ancora non possono solo vedere il codice ma non il file.
E per complicare ulteriormente le cose: la mia pagina si trova su un webserver separato quindi non ho la possibilità di sapere con precisione chi sia loggato o meno alla intranet (grestita da altri.)
Unica soluzione è quindi rendere la vita difficile a chi non passa dalle pagine principali.

Sto provando ad utilizzare codice asp nella pagina di visualizzazione per forzare il download tramite parametro...

*******************
' Recupero il file da scaricare
Dim download

' Creo l'oggetto ADODB.Stream
download = CreateObject("ADODB.Stream")

' Apro la connessione e carico il file
download.Type = 1
download.Open()
download.LoadFromFile(Server.MapPath("doc\" & Session.SessionID & "\" & nomeFile))

' Aggiungo le intestazioni del tipo di file
Response.AddHeader("Content-Disposition", "attachment; filename=" & nomeFile)
Response.ContentType = "application/octet-stream"
Response.BinaryWrite(download.Read)

download.Close()
download = Nothing
*************************

Funziona!!!!!

Se hai una soluzione più elegante da consigliarmi sono tutto orecchi
Altrimenti non ti faccio perdere altro tempo visto che ai capoccia sembra andare bene.
Grazie comunque per la risposta.
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5