Ritorno alla richiesta di ieri, che sono riuscito a risolvere.
Infatti ora la funzionalità, oltre ad eseguire il download forzato del file, esegue la ricerca se tale file esiste, attraverso la prima parte del nome del file, privo di estensione. Quest'ultima infatti non la conosco a priori e potrebbe essere di vario tipo (.doc, .zip,.pdf, etc...)
Ora il problema è che non mi chiude la popup, quando termina il download.
Chiaramente utilizzo la "window.close" di javascript, ma posto comunque in questa sezione perchè credo che il problema sia nel codice asp.
Codice PHP:
<%@ Language=VBScript %>
<head>
<TITLE>Ricerca bandi</TITLE>
</head>
<body style="background-color: #3B9C9C">
<%
Function tipofile(nomefile)
Dim vc_tipofile
vc_tipofile = nomefile
vc_tipofile = LCase(Right(vc_tipofile, Len(vc_tipofile) - InStrRev(vc_tipofile, ".", -1, 1)))
' verifico estensione del file .zip .word ecc
Select Case vc_tipofile
Case "doc"
vc_tipofile = "doc"
Case "dir"
vc_tipofile = "dir"
Case "htm", "html"
vc_tipofile = "htm"
Case "tif", "jpg" , "gif"
vc_tipofile = "img"
Case "txt"
vc_tipofile = "txt"
Case "pdf"
vc_tipofile = "pdf"
Case "zip"
vc_tipofile = "zip"
Case Else
vc_tipofile = "misc"
End Select
tipofile = vc_tipofile
End Function
Private Sub DownloadFile(file)
Dim strAbsFile
Dim strFileExtension
Dim objFSO
Dim objFile
Dim objStream
strAbsFile = Server.MapPath(file)
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strAbsFile) Then
Set objFile = objFSO.GetFile(strAbsFile)
Response.Clear
Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
Response.AddHeader "Content-Length", objFile.Size
Response.ContentType = "application/octet-stream"
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
Response.CharSet = "UTF-8"
objStream.LoadFromFile(strAbsFile)
Response.BinaryWrite(objStream.Read)
objStream.Close
Set objStream = Nothing
Set objFile = Nothing
End If
Set objFSO = Nothing
End Sub
' ************************
' Recupero nome del file
' ************************
NomeFile=request.querystring("nomefile")
' ************************
' Lista dei file nella dir
' limitata a 1 mese
' ************************
OldDate = DateAdd("m",-1,Date())
' Leggo il contenuto della directory e lo metto in un array
Dim strPath 'Path directory di ricerca
Dim objFSO 'Variabile FileSystemObject
Dim objFolder 'Variable directory
Dim objItem 'Variable per il loop nel contenuto della directory
strPath = "archivio/file/"
' Creo oggetto FSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Creo un gestore per la directory
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
' Carico il contenuto del percorso in una matrice
Dim Listing (9999, 4)
num = 1
For Each objItem In objFolder.Files
FileDate = objItem.DateLastModified
If IsDate(FileDate) Then FileDate = CDate(FileDate)
If FileDate > OldDate Then
Listing (num, 1) = objItem.Name
Listing (num, 2) = objItem.Size
Listing (num, 3) = objItem.Type
Listing (num, 4) = objItem.Path
num=num+1
End If
Next
num=num-1
' Fine, distruggo gli oggetti creati
Set objItem = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
' ************************
' Inserimento dell'array nel database
' ************************
vc_flagtrovato="N"
For a=1 to num
nome_sporco=Listing(a,1)
nome_pulito=UCase( Left(nome_sporco, Len(nome_sporco)-4 ) )
dimKb = Int (Listing (a, 2)/1000)
if nome_pulito=ucase(NomeFile) then
i=i+1
vc_flagtrovato="S"
pathcompleto=strPath&nome_sporco
Call DownloadFile(pathcompleto)
end if
Next
if vc_flagtrovato="N" then
%>
<table>
<tr>
<td valign="top" class="testolista">
<font style="COLOR: #800000; FONT: bold 10px Verdana">
Attenzione!!!
Il file <font style="COLOR: #FFFFFF; FONT: bold 10px Verdana"><%=nomefile%></font> cercato non è presente.
Contattare gli uffici della XXX per maggiori dettagli.
</font>
</td>
</tr>
</table>
<center>
<input type="button" style="font-family: verdana, tahoma, arial; color: #577596; font-size: 11px; border-style: solid; border-color: #577596; border-width: 1px; background: #E3EAF1" value="Chiudi" onClick="window.close()" class="campiform" onMouseOver="this.className='campiform2'" onmouseOut="this.className='campiform'">
</center>
<% end if %>
</body>
Questo è il codice completo.
Ho provato inserendo questo codice nei seguenti punti
Caso 1)
Codice PHP:
...
Call DownloadFile(pathcompleto)
<script>
window.close();
</script>
end if
...
Caso 2)
Codice PHP:
...
<%else%>
<script>
window.close();
</script>
<% end if %>
</body>
Ma rimane comunque aperta la popup, tra l'altro con sfondo bianco.
Avete qualche suggerimento in proposito?
Grazie
ciao