Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: CHECKBOX e UPLOAD FILE

  1. #1

    CHECKBOX e UPLOAD FILE

    Salve a tutti
    ho un problema legato alla trasmissione di valori di alcune checkbox contenute all'interno di un form x l'upload di files.
    praticamente i valori non vengono inviati alla pagina "upload.asp" se sono contenuti all'interno del form:

    <form method="POST" enctype="multipart/form-data" action="upload.asp">
    <input type="file" name="blob" style="background-image: url('img2/sfondofield.gif'); width: 300; border: 1 solid #999999" size="40">

    <input type="checkbox" name="test" value="Sensibile">
    <input type="checkbox" name="test" value="Attenta">
    <input type="checkbox" name="test" value="Concreta">
    <input type="checkbox" name="test" value="Romantica">
    <input type="submit" value="Inserisci" style="width: 100%; background-color: #999999; color: #FFFFFF">
    </form>
    e la pagina upload.asp li riceve richiamandoli con
    valore=Uploader.form("valore")

    se invece l'itestazione del form è:
    <form method="POST" action="upload.asp">
    e la pagina upload li riceve richiamandoli con
    valore=Request("valore")

    restituisce tutti i valori delle checkbox selezionate.

    come posso fare?
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    è il codice che esegue l'upload che deve leggere i valori checkbox.
    Prendi il manuale del tuo upload e cerca come si fa

  3. #3
    purtroppo il manuale non l'ho
    è un codice preconfezionato.

    Potresti darmi una mano tu che sei il master dell'upload?

    questa è la classe che utilizzo:
    codice:
    <%
    Class FileUploader
    	Public  Files
    	Private mcolFormElem
    	Public maxSize
    	Public fileExt
    	Public error
    	Public errorDesc
    	
    	Private Sub Class_Initialize()
    		Set Files = Server.CreateObject("Scripting.Dictionary")
    		Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    	End Sub
    	
    	Private Sub Class_Terminate()
    		If IsObject(Files) Then
    			Files.RemoveAll()
    			Set Files = Nothing
    		End If
    		If IsObject(mcolFormElem) Then
    			mcolFormElem.RemoveAll()
    			Set mcolFormElem = Nothing
    		End If
    	End Sub
    
    	Public Property Get Form(sIndex)
    		Form = ""
    		If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
    	End Property
    
    	Public Default Sub Upload()
    		Dim biData, sInputName
    		Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
    		Dim nPosFile, nPosBound
    
    		error = False
    		errorDesc = ""
    		
    		'verifico se lo script che ha richiamato la classe
    		'ha inizializzato la dimensione max del file
    		If Not IsNull(maxSize) Then
    			'se il file supera la dimensione stabilita si interrompe la sub
    			If Request.TotalBytes > maxSize Then
    				Error = True
    				errorDesc = "File più grande di " & maxSize & " byte"
    				Exit Sub
    			End If
    		End If
    
    		biData = Request.BinaryRead(Request.TotalBytes)
    
    		nPosBegin = 1
    		nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    		
    		If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
    		 
    		vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
    		nDataBoundPos = InstrB(1, biData, vDataBounds)
    		
    		Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
    			
    			nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
    			nPos = InstrB(nPos, biData, CByteString("name="))
    			nPosBegin = nPos + 6
    			nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
    			sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    			nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
    			nPosBound = InstrB(nPosEnd, biData, vDataBounds)
    			
    			If nPosFile <> 0 And  nPosFile < nPosBound Then
    				Dim oUploadFile, sFileName, sFileExt
    				Set oUploadFile = New UploadedFile
    				
    				nPosBegin = nPosFile + 10
    				nPosEnd =  InstrB(nPosBegin, biData, CByteString(Chr(34)))
    				
    				sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    				
    				oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    				
    				'recuperiamo l'estenzione del file
    				sfileExt = Right(sFileName1, Len(sFileName1) - InStrRev(sFileName1, "."))
    				'verifico se lo script che ha richiamato la classe
    				'ha inizializzato il tipo di estenzioni ammesse
    				If Not IsNull(fileExt) Then
    					'se l'estenzione del file non è incluse tra quelle imposte
    					'imterrompiamo la sub
    				  If Instr(fileExt, sFileExt) = 0 Then
    				  	Error = True
    				  	errorDesc = "Tipo di file non ammesso"
    				  	Exit Sub
    				  End If
    				End If
    
    				nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
    				nPosBegin = nPos + 14
    				nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    				
    				oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				
    				nPosBegin = nPosEnd+4
    				nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
    				oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
    				
    				If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
    			Else
    				nPos = InstrB(nPos, biData, CByteString(Chr(13)))
    				nPosBegin = nPos + 4
    				nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
    				If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    			End If
    
    			nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
    		Loop
    	End Sub
    
    	'String to byte string conversion
    	Private Function CByteString(sString)
    		Dim nIndex
    		For nIndex = 1 to Len(sString)
    		   CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
    		Next
    	End Function
    
    	'Byte string to string conversion
    	Private Function CWideString(bsString)
    		Dim nIndex
    		CWideString =""
    		For nIndex = 1 to LenB(bsString)
    		   CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
    		Next
    	End Function
    End Class
    
    Class UploadedFile
    	Public ContentType
    	Public FileName
    	Public FileData
    	
    	Public Property Get FileSize()
    		FileSize = LenB(FileData)
    	End Property
    
    	Public Sub SaveToDisk(sPath)
    		Dim oFS, oFile
    		Dim nIndex
    	
    		If sPath = "" Or FileName = "" Then Exit Sub
    		If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
    	
    		Set oFS = Server.CreateObject("Scripting.FileSystemObject")
    		If Not oFS.FolderExists(sPath) Then Exit Sub
    		
    		Set oFile = oFS.CreateTextFile(sPath & FileName, True)
    		
    		For nIndex = 1 to LenB(FileData)
    		    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
    		Next
    		oFile.Close
    	End Sub
    	
    	Public Sub SaveToDatabase(ByRef oField)
    		If LenB(FileData) = 0 Then Exit Sub
    		
    		If IsObject(oField) Then
    			oField.AppendChunk FileData
    		End If
    	End Sub
    
    End Class
    %>
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    I forms sono nella collezione mcolFormElem

    Dovresti recuperarli con un'istruzione di questo tipo

    oUpload.Form("NomeCampo")

    Naturlmente al posto di oUpload devi mettere il nome del tuo oggetto.

    Ti avverto che quel'upload non riesce a caricare più di 200kb

  5. #5
    i valori li richiamo con
    Uploader.form("valore")

    ma i valori delle checkbox non passano
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Perchè l'algoritmo di recupore valori è sbagliato

  7. #7
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Prova con queste variazioni.
    In neretto vedi ti ho evidenziato le modifiche :

    codice:
    <%
    Class FileUploader
    	Public  Files
    	Private mcolFormElem
    	Public maxSize
    	Public fileExt
    	Public error
    	Public errorDesc
    	
    	Private Sub Class_Initialize()
    		Set Files = Server.CreateObject("Scripting.Dictionary")
    		Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    		'Errore concettuale, non veniva messa la seguente linea
    		mcolFormElem.CompareMode=1
    	End Sub
    	
    	Private Sub Class_Terminate()
    		If IsObject(Files) Then
    			Files.RemoveAll()
    			Set Files = Nothing
    		End If
    		If IsObject(mcolFormElem) Then
    			mcolFormElem.RemoveAll()
    			Set mcolFormElem = Nothing
    		End If
    	End Sub
    
    	Public Property Get Form(sIndex)
    		Form = ""
    		If mcolFormElem.Exists(sIndex) Then Form = mcolFormElem.Item(sIndex)
    	End Property
    
    	Public Default Sub Upload()
    		Dim biData, sInputName
    		Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
    		Dim nPosFile, nPosBound
    		Dim sInputValue
    		
    		error = False
    		errorDesc = ""
    		
    		'verifico se lo script che ha richiamato la classe
    		'ha inizializzato la dimensione max del file
    		If Not IsNull(maxSize) Then
    			'se il file supera la dimensione stabilita si interrompe la sub
    			If Request.TotalBytes > maxSize Then
    				Error = True
    				errorDesc = "File più grande di " & maxSize & " byte"
    				Exit Sub
    			End If
    		End If
    
    		biData = Request.BinaryRead(Request.TotalBytes)
    
    		nPosBegin = 1
    		nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    		
    		If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
    		 
    		vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
    		nDataBoundPos = InstrB(1, biData, vDataBounds)
    		
    		Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
    			
    			nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
    			nPos = InstrB(nPos, biData, CByteString("name="))
    			nPosBegin = nPos + 6
    			nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
    			sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    			nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
    			nPosBound = InstrB(nPosEnd, biData, vDataBounds)
    			
    			If nPosFile <> 0 And  nPosFile < nPosBound Then
    				Dim oUploadFile, sFileName, sFileExt
    				Set oUploadFile = New UploadedFile
    				
    				nPosBegin = nPosFile + 10
    				nPosEnd =  InstrB(nPosBegin, biData, CByteString(Chr(34)))
    				
    				sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    				
    				oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    				
    				'recuperiamo l'estenzione del file
    				sfileExt = Right(sFileName1, Len(sFileName1) - InStrRev(sFileName1, "."))
    				'verifico se lo script che ha richiamato la classe
    				'ha inizializzato il tipo di estenzioni ammesse
    				If Not IsNull(fileExt) Then
    					'se l'estenzione del file non è incluse tra quelle imposte
    					'imterrompiamo la sub
    				  If Instr(fileExt, sFileExt) = 0 Then
    				  	Error = True
    				  	errorDesc = "Tipo di file non ammesso"
    				  	Exit Sub
    				  End If
    				End If
    
    				nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
    				nPosBegin = nPos + 14
    				nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    				
    				oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				
    				nPosBegin = nPosEnd+4
    				nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
    				oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
    				
    				If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
    			Else
    				nPos = InstrB(nPos, biData, CByteString(Chr(13)))
    				nPosBegin = nPos + 4
    				nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
    				'*** Errore di algoritmo - Commentata
    				'If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				sInputValue = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
    				If Not mcolFormElem.Exists(sInputName) Then 
    					mcolFormElem(sInputName) = sInputValue 
    				Else
    					if sInputValue <>"" then mcolFormElem(sInputName) = mcolFormElem(sInputName) & ", " & sInputValue 
    				End if
    			End If
    
    			nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
    		Loop
    	End Sub
    
    	'String to byte string conversion
    	Private Function CByteString(sString)
    		Dim nIndex
    		For nIndex = 1 to Len(sString)
    		   CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
    		Next
    	End Function
    
    	'Byte string to string conversion
    	Private Function CWideString(bsString)
    		Dim nIndex
    		CWideString =""
    		For nIndex = 1 to LenB(bsString)
    		   CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
    		Next
    	End Function
    End Class

  8. #8
    grazie x l'aiuto ma inserendo le modifiche mi da quest'errore:

    Errore di run-time di Microsoft VBScript errore "800a01fa'

    Classe non definita: 'UploadedFile'

    /webpub/nutilla/cerco/class_upload.asp, riga 76


    riga 76:
    Set oUploadFile = New UploadedFile

    se invece inserisco il vecchio codice
    la pagina scrive tutti i risultati e fa l'upload tranne le checkbox
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  9. #9
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Capisco, è tardi, ma la classe UploadedFile va bene così com'è, non te l'ho riscritta. Devi metterla nel file! Capito? Devi scriverla nel file class_upload.asp!

    Oppure dal file funzionante aggiungi le modifiche che ti ho anche evidenziato

  10. #10
    infatti, non sò quale errore abbia commesso
    ora funge però anche così mi scrive tutti i vari campi tranne le checkbox
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.