13 messaggi dal 06 settembre 2002
Salve a tutti,
il codice riportato qui sotto è una script di upload nel server di 2 files.
Questo script raccoglie da una pagina htm un form con due campi file1, file2 e fin quì tutto ok.
<FORM METHOD="post" ENCTYPE="multipart/form-data" ACTION="upload.asp">
<p>File1 : 
    <INPUT TYPE="file" NAME="file1">
    <BR>
    File2 : 
    <INPUT TYPE="file" NAME="file2">
  </p>
  <p>Nome 
    <input type="text" name="nome">
  </p>
   <p><INPUT TYPE="submit" NAME="Enter" value=" Upload ">
  </p>
</FORM>


Il problema che vengo a riscontrare sta nel fatto che i file vengono uplodati nel server tranquillamente, ma vorrei che scrivesse i nomi dei files uplodati in un database.
Posto il codice in attesa di un aiuto da parte della community.


<%@ LANGUAGE="VBSCRIPT" %>
<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest  RequestBin

'file 1 

'######### Funzione per memorizare un numero casuale attaccato al file uploato 

    Function Password_GenPass( nNoChars, sValidChars )

  Const szDefault = "0123456789"
  
  Randomize
  
   If sValidChars = "" Then
    sValidChars = szDefault    
  End If
  nLength = Len( sValidChars )
  
  For nCount = 1 To nNoChars
    nNumber = Int((nLength * Rnd) + 1)
    sRet = sRet & Mid( sValidChars, nNumber, 1 )
  Next
  Password_GenPass = sRet  
End Function

  sOtherId = Password_GenPass( 10, "" ) 
 

'################################################# Fine funzione numero casuale



contentType = UploadRequest.Item("file1").Item("ContentType")
filepathname = UploadRequest.Item("file1").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
if not filename="" then 
value = UploadRequest.Item("file1").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(sOtherId &"_"& filename ))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
set myfile = nothing


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")
    
    Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-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("filename="))
    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),RequestBin,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

Response.Write filename & " Uploaded success! <br>"
end if



'file 2 
'######### Funzione per memorizare un numero casuale attaccato al file uploato 

    Function Password_GenPass( nNoChars, sValidChars )

  Const szDefault = "0123456789"
  
  Randomize
  
   If sValidChars = "" Then
    sValidChars = szDefault    
  End If
  nLength = Len( sValidChars )
  
  For nCount = 1 To nNoChars
    nNumber = Int((nLength * Rnd) + 1)
    sRet = sRet & Mid( sValidChars, nNumber, 1 )
  Next
  Password_GenPass = sRet  
End Function

  sOtherId = Password_GenPass( 10, "" ) 
 

'################################################# Fine funzione numero casuale

contentType = UploadRequest.Item("file2").Item("ContentType")
filepathname = UploadRequest.Item("file2").Item("FileName")
filename2 = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
if not filename="" then 
value = UploadRequest.Item("file2").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(sOtherId &"_"& filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
set myfile = nothing


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")
    
    Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-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("filename="))
    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),RequestBin,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

Response.Write filename & " Uploaded success! <br>"
end if 
 


Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("prova.mdb")

sql = "SELECT * FROM prova"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
                     
                     rs.AddNew
  rs.Fields("filename") = Request.Form("filename")
                     rs.Fields("nome") = Request.Form("nome")
  rs.update
    

%>
1.818 messaggi dal 21 giugno 2001
Contributi
Non puoi usare Request.Form("filename") quando nel form è impostato ENCTYPE="multipart/form-data". Quando salvi il file gli darai un nome no? Usa quello.

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
13 messaggi dal 06 settembre 2002
Ok,
ma togleindo l'inserimento al db, ho gli stessi campi nominatri alla stessa maniera in tutti e due gli upload.

Response.Write filename & " Uploaded success! <br>"


Ccando di poter richiamarli in m,aniera divera

Response.Write filename1 & " Uploaded success! <br>"


Response.Write filename2 & " Uploaded success! <br>"


genero un errore che nn mi parmette di arrivare alla conclusione sia con i due campi filename sia che con un campo text normale.
13 messaggi dal 06 settembre 2002
Questo code scrive solo i nomi dei file nel db, ma il campo text prova no
Inserendo un response.write nome nn mi da nessun risultato di errore.


<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest  RequestBin

'file 1 

'######### Funzione per memorizare un numero casuale attaccato al file uploato 

    Function Password_GenPass( nNoChars, sValidChars )

  Const szDefault = "0123456789"
  
  Randomize
  
   If sValidChars = "" Then
    sValidChars = szDefault    
  End If
  nLength = Len( sValidChars )
  
  For nCount = 1 To nNoChars
    nNumber = Int((nLength * Rnd) + 1)
    sRet = sRet & Mid( sValidChars, nNumber, 1 )
  Next
  Password_GenPass = sRet  
End Function

  sOtherId = Password_GenPass( 10, "" ) 
 

'################################################# Fine funzione numero casuale



contentType = UploadRequest.Item("file1").Item("ContentType")
filepathname = UploadRequest.Item("file1").Item("FileName")
filename2 = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
if not filename2="" then 
value = UploadRequest.Item("file1").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(sOtherId &"_"& filename2 ))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
set myfile = nothing


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")
    
    Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-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("filename2="))
    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 "FileName2", FileName2
      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),RequestBin,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

'Response.Write filename & " Uploaded success! <br>"
Response.Write "<font size=""3"" color=""red""> Img piccola : " & filename2 & " OK </font><br>"

end if
'file 2 
'######### Funzione per memorizare un numero casuale attaccato al file uploato 

    Function Password_GenPass( nNoChars, sValidChars )

  Const szDefault = "0123456789"
  
  Randomize
  
   If sValidChars = "" Then
    sValidChars = szDefault    
  End If
  nLength = Len( sValidChars )
  
  For nCount = 1 To nNoChars
    nNumber = Int((nLength * Rnd) + 1)
    sRet = sRet & Mid( sValidChars, nNumber, 1 )
  Next
  Password_GenPass = sRet  
End Function

  sOtherId = Password_GenPass( 10, "" ) 
 

'################################################# Fine funzione numero casuale

contentType = UploadRequest.Item("file2").Item("ContentType")
filepathname = UploadRequest.Item("file2").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
if not filename="" then 
value = UploadRequest.Item("file2").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(sOtherId &"_"& filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
set myfile = nothing


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")
    
    Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-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("filename="))
    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),RequestBin,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

'Response.Write filename & " Uploaded success! <br>"
Response.Write "<font size=""3"" color=""red""> Img piccola : " & filename & " OK </font><br>"
end if



Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("prova.mdb")
sql = "SELECT * FROM prova"
Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open sql, conn, 3, 3
    rs.AddNew
    rs.Fields("filename1") = filename2
    rs.Fields("filename2") = filename
    rs.fields("nome") = nome
    rs.update
rs.Close
set rs = Nothing
conn.Close 
set conn = Nothing

%>

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.