Salve a tutti!
ho un pagina index.asp e upload.asp dove nella pagina index carico il documento e visualizzo tutti i file nell'archivio access, mentre nella pagina upload effettuo la scrittura nell'archivio.
premesso questo, vado al mio problema:
devo poter aggiungere al nome del file caricato una serie di numeri, lettere, essendo che devo caricare sempre lo stesso file, quindi devo evitare l'autocancellazione.
come potete vedere nella pagina upload.asp, carico i file nella cartella public dove ho permesso di scrittura,caricando un file con lo stesso nome di quello che già c'era prima lui lo sovrascrive e quindi mi rimane sempre l'ultimo inserito e mi toglie quelli precedenti.
sicuramente mi sono espresso male se volete chiarimenti chiedete pure.
grazie!!!
------Pagina Index.asp----------
<html>
<head>
<title>Index.asp</title>
<style type="text/css">
td, p, input, textarea { font-size: 12px; font-family: Monofont; }
a { color: #000080; text-decoration: None; }
a:hover { color: #800000; text-decoration: Underline; }
</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="upload_ordine.asp" name="form">
<div align="center">
<table width="45%" cellpadding="3" cellspacing="3" border="1" bordercolor="#C0C0C0" height="71">
<tr>
<td align="center" width="33%" height="43"><font size="3">ALLEGATO:</font></td>
<td align="center" width="67%" height="43">
<input type="file" name="nome_file" maxlength="255" size="40" />
</td>
</tr>
<tr>
<td align="center" colspan="2" height="47">
<input type="submit" value="Carica File" name="submit" />
</td>
</tr>
</table>
</div>
</form>
<%
' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/ordini.mdb")
' //// seleziono la tabella per stampare a video i link ai file caricati e ordino i risultati ID decrescente
Sql = "Select * from elenco order by ID Desc ;"
Set Rs = Conn.Execute(Sql)
' //// se la tabella è vuota stampo a video un messaggio e chiudo il records set
If Rs.Eof OR Rs.Bof Then
Response.Write("<center><font color='#003366'>Non ci sono file nel database.</font></center>")
Rs.Close
Set Rs = Nothing
' //// se la tabella non è vuota
Else
%>
<%
'///inizio tabella fissa
Function Splitter(sText, iChars, sSplitter)
Dim I, J, Y, iFrags, iStart, iLen
Dim sResult, sTrimmed
Dim arrWords, arrTrim
arrTrim = Split(sText, Chr(32))
sTrimmed = ""
For Y = LBound(arrTrim) To UBound(arrTrim)
If arrTrim(Y) <> "" Then sTrimmed = sTrimmed & arrTrim(Y) & Chr(32)
Next
sTrimmed = Trim(sTrimmed)
If Len(sTrimmed) > 0 And Len(sTrimmed) > iChars Then
arrWords = Split(sTrimmed, Chr(32))
sResult = ""
For I = 0 To UBound(arrWords)
iLen = Len(arrWords(I))
If Len(arrWords(I)) > iChars Then
iFrags = Int(iLen / iChars)
For J = 0 To iFrags
iStart = (iChars * J) + 1
If Len(Mid(arrWords(I), iStart, iChars)) > 0 Then
sResult = sResult & sSplitter & Mid(arrWords(I), iStart, iChars)
End If
Next
sResult = Mid(sResult, Len(sSplitter) + 1)
Else
sResult = sResult & Chr(32) & arrWords(I)
End If
Next
Splitter = sResult
Else
Splitter = sTrimmed
End If
End Function
'///fine tabella fissa
%>
<div align="center">
<table width="352" border="1" bordercolor="#C0C0C0">
<tr bgcolor="#C0C0C0">
<td width="136"><font size="3">Data</font></td>
<td width="196">
<font size="3">Nome Documento</font></p>
</td>
</tr>
<%
' //// effettuo un ciclo sulla tabella per stampare a video tutti i records
While Not Rs.Eof
data =Rs.Fields("data")
documento =Rs.Fields("nome_file")
%>
<tr>
<td width="136"><%=Splitter(data, 10, chr(32))%></td>
<td width="196">"><%=Splitter(documento, 20, chr(32))%></td>
</tr>
<%
' //// vado avanti con il ciclo
Rs.MoveNext
Wend
' //// chiudo il records set e libero risorse
Rs.Close
Set Rs = Nothing
%>
</table>
</div>
<% End If %>
</body>
</html>
<%
' //// chiudo la connessione e libero risorse
Conn.Close()
Set Conn = Nothing
%>
------Pagina Upload.asp----------
<%
' //// dichiarazione delle variabili obbligatoria
option explicit
' //// dichiaro le variabili
Dim folder
Dim titolo_file
Dim nom_file
Dim byteCount
Dim RequestBin
Dim PosBeg
Dim i
Dim char
Dim PosEnd
Dim boundary
Dim boundaryPos
Dim Pos
Dim intCount
Dim Name
Dim PosFile
Dim PosBound
Dim Value
Dim FileName
Dim ContentType
Dim nome_file
Dim Conn
Dim filepathname
Dim ScriptObject
Dim MyFile
Dim Sql
Dim Rs
' //// Directory dove verrà caricato il file (la cartella deve avere i permessi in scrittura)
folder = "/public"
' ////// Inizio Componente Upload
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
Sub BuildUploadRequest(RequestBin)
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Conte nt-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filen ame="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
UploadControl.Add "Value" , Value
UploadRequest.Add name, UploadControl
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),Requ estBin,boundary)
Loop
End Sub
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
' //// Fine Componente Upload
' //// riempio le variabili con valori proveninti dalla form
' ///titolo_file = UploadRequest.Item("titolo_file").Item("Value")
nome_file = UploadRequest.Item("nome_file").Item("Value")
' //// controllo che la form sia state regolarmente popolata
If IsNull(nome_file) OR nome_file = "" Then
Response.Write ("<center>
Compilare tutti i campi!
Indietro</center>")
Response.End
End if
' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/ordini.mdb")
' //// creo il file nella folder
if UploadRequest.Item("nome_file").Item("FileName")=" " then
Else
contentType = UploadRequest.Item("nome_file").Item("ContentType" )
filepathname = UploadRequest.Item("nome_file").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("nome_file").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder) &"\"&filename)
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
End if
' //// seleziono la tabella dove scrivero l'ora, il titolo ed il nome del file
Sql = "Select * FROM elenco"
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open SQL, Conn, 1, 2
' //// aggiugo un nuovo record alla tabella
Rs.AddNew
Rs("data") = date()
Rs("nome_file") = filename
Rs.UpDate
' //// chiudo il record set e libero le risorse
Rs.Close
Set Rs = Nothing
' //// chiudo la connessione e libero le risorse
Conn.Close
Set Conn = Nothing
' //// carico la pagina di risposta e stampo a video il link al file caricato
Response.Redirect("index.asp")
%>

Rispondi quotando
