Ciao, ho trovato discussioni riguardo questo problema, ma non riesco ad adattare le soluzioni al mio caso:
vi posto la mia pagina attuale (che funziona con i file piccoli) e la soluzione che dicono funzionante, postata da Optime, di spezzettare i file, ma che non capisco (non sono io l'esperto ASP in "casa" ...) come adattare alla mia situazione... mi date una mano?
MIA PAGINA:
<%@Language="VBScript"%>
<!--#include Virtual="/Connections/Internet.asp" -->
<!--#include Virtual="/adovbs.inc" -->
<%
Dim ADOCon
Set ADOCon = Server.CreateObject("ADODB.Connection")
ADOCon.ConnectionTimeout = 0
ADOCon.Open MM_Internet_STRING
Set ADOCmdPar = Server.CreateObject("ADODB.Command")
ADOCmdPar.ActiveConnection = ADOCon
ADOCmdPar.CommandText = "sp_InsDownload"
ADOCmdPar.CommandType = adCmdStoredProc
'Response.Write("ID Conto =" & Request("C"))
'Response.Write("<BR>")
Set ADOParameter= ADOCmdPar.CreateParameter("@IDCONTO",adInteger,adParamInput,4,Request("C"))
ADOCmdPar.Parameters.Append ADOParameter
Set ADOParam=Nothing
'Response.Write("ID Contenuto =" & Request("IDC"))
'Response.Write("<BR>")
Set ADOParameter= ADOCmdPar.CreateParameter("@IDCONTE",adInteger,adParamInput,4,Request("IDC"))
ADOCmdPar.Parameters.Append ADOParameter
Set ADOParam=Nothing
AdoCmdPar.Execute
SQLstr = "SELECT NomeFile FROM dbo.WEB_EL_CONT_AREA_RIS WHERE ID_CONTEN=" & Request("IDC")
Set ADORst = Server.CreateObject("ADODB.RecordSet")
ADORst.Open SQLstr,ADOCon ,adOpenStatic,adLockReadOnly
Set download = Server.CreateObject("ADODB.Stream")
'Response.Write("Nome File =" & ADORst(0))
'Response.Write("<BR>")
' Apro la connessione e carico il file
download.Type = 1
download.Open
download.LoadFromFile Server.MapPath("/Dfiles/" & ADORst(0))
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=" & Replace(ADORst(0), " ", "_")
Response.BinaryWrite download.Read
' Un po di pulizia...
download.Close
Set download = Nothing
%>
METODO PROPOSTO:
<%
'8***********************************************8
' Jason Withrow - For ASP101 July 2001
' This page forces the save as dialogue to prevent
' files from being opened in the browser.
'
' jwithrow@mediaone.net
'8***********************************************8
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
' added by edc 7.1.2003
' il nome del file viene passato in una session
If Session("FileName") = "" Then
Response.Redirect "default.asp"
End If
Dim oFso, oFile
strFilePath = Server.MapPath(Session("FileName"))
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oFile = oFso.GetFile(strFilePath)
strFileName = UCase(oFile.Name)
strFileSize = CLNG(oFile.size)
Set oFile = Nothing
Set oFso = Nothing
' end add
Const adTypeBinary = 1
'strFilePath = Request.QueryString("File")
'strFileSize = Request.QueryString("Size")
'strFileName = Request.QueryString("Name")
Response.Clear
'8*******************************8
' Requires MDAC 2.5 to be stable
' I recommend MDAC 2.6 or 2.7
'8*******************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4))
' Feel Free to Add Your Own Content-Types Here
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
ContentType = "application/x-zip-compressed"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Do While Not objStream.EOS
Response.BinaryWrite objStream.Read(1024)
Response.Flush
Loop
objStream.Close
Set objStream = Nothing
%>