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

    alternative all'oggetto REQUEST per prelevare dati da una form MULTIPART

    vi riassumo in due parole il mio problema che ho discusso anche qualche post fa con deivnet , il quale ringrazio per la pazienza avuta con me.

    ho una form che l'utente deve riempire con i propri dati e inoltre deve aggiungere una foto.
    I dati devono essere salvati su un db e la foto sella cartella public.

    Riesco a fare l'upload del file , ma non riesco a recuperare i valori inseriti nella form (nome, cognome, ecc...) per salvarli nel db.
    Mi veniva suggerito che recuperare i valori della form quando metti multipart nel tag form è quasi impossibile perche le proprietà dell'oggetto request in quel caso vengono annullate.

    avete suggerimenti????

    vi posto il codice:
    file add.asp

    codice:
    <html>
    <head>
    <title> DataBase di immagini </title></head><body>
    
    	<form method="post" action="add_process.asp" enctype="multipart/form-data">
    	<tr>
    		
        <td colspan=2> 
    
    Nome 
    
            <input type="text" name="nome" value="nome" size="20">
          </p>
          
    
     Cognome
    
            <input name="cognome" type="text" id="cognome" value="cognome" size="20">
          </p>
          
    
     Inserisci immagine
    
            <input type="file" name="path" size="20">
            </p>
          
    
    
    <input type="submit" value="Salva">
            <input name="submit" type="reset" value="Cancella">
          </p></td>
    	</tr>
    	</form>
    </table>
    </body>
    </html>
    file add_process.asp

    codice:
    <%
    
    'Upload del file						 '
    
    'variabili di configurazione
    Dim folder
    folder = "\public"				'directory sul server con accesso in scrittura
    'fine variabili di configurazione
    
    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("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
    
    byteCount = Request.TotalBytes
    
    RequestBin = Request.BinaryRead(byteCount)
    Dim UploadRequest
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    
    BuildUploadRequest  RequestBin
    
    contentType = UploadRequest.Item("path").Item("ContentType")
    filepathname = UploadRequest.Item("path").Item("FileName")
    filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    value = UploadRequest.Item("path").Item("Value")
    
    'Create FileSytemObject Component
    Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    
    'Create and Write to a File
    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
    
    dim cn, sql
    set cn = Server.CreateObject("ADODB.Connection")
    cn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;"&_
    											"Persist Security Info=False;"&_
    											"Data Source="& Server.MapPath("/mdb-database/db_utenti.mdb")
    cn.open()
    
    ' salva la scheda sul database
    
    dim nome, cognome, path
    nome = replace(Request("nome"), "'", "''")
    cognome = replace(Request("cognome"), "'", "''")
    path = replace(filepathname , "'", "''")
    
    
    response.Write(nome)
    response.Write(" - ")
    response.Write(cognome)
    response.Write(" - ")
    response.Write(path)
    response.Write(" - ")
    ' effettua l'inserimento nel database
    
    sql = "INSERT INTO schede(cognome, nome, image_path) VALUES( '"&cognome&"','"&nome&"', '"&path&"')"
    cn.execute(sql)
    
    ' libera le risorse
    
    cn.close()
    set cn = nothing
    %>
    ..: Serie A :..
    ..: FORZA PALERMOOOOoooo.....

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Con questo script non lo puoi fare... mi sembrava di avertelo detto.
    Devi prendere l'altro script discusso oggi.

    Roby

  3. #3
    mi sto incasinando non capisco piu nulla.
    A me servirebbe una cosa del tipo (vedi allegato) da poi implementare con altri campi.
    L'importante è che mi salvi i campi nome , cognome, immagine_path , ecc.... in un database e mi faccia l'upload dell'immagine.
    Con quel codice che dicevi oggi io mi incasino e non riesco a sistemarlo come interessa a me ( non sono un genio in asp)....
    Mi puoi dare una mania perfavore?????
    Immagini allegate Immagini allegate
    ..: Serie A :..
    ..: FORZA PALERMOOOOoooo.....

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prendi lo script e postalo qui. ha un errore di battitura. Per il resto funziona.
    Ricorda che l'immagine va in una cartella con i permessi di scrittura mentre nel db va solo il suo nome (percorso).

    Roby

  5. #5
    vediamo se ho fatto le cose bene (visti i risultati fino ad ora.....)
    ANCHE SE MI CHIEDO: ma dove li salva tutti questi dati se non vedo nessuna connessione a database ( me serve che salvi il tutto)


    form.htm

    codice:
    <form action="upload.asp" method="post" enctype="multipart/form-data">
    Cognome<input type="text" name="testo1" size="20">
    
    
    Nome<input type="text" name="testo2" size="20"></p>
    
    
    Citta<input type="text" name="testo3" size="20"></p>
    
    
    foto:<input type="file" name="foto" size="20"> 
    
    
    
    <input type="submit" value="   Invia   "> </p>
    </form>
    upload.asp

    codice:
    <%
    'Questa variabile setta il percorso di dove effettuare l'upolad
    'la cartella non puo non esistere lo script non la crea ! ! !
    
    percorso = "/public"
    
    ByteRicevuti = Request.TotalBytes
    
    if ByteRicevuti > 0 then
    	DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    	For i = 1 To lenB(DatiRicevuti)
    		FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    	Next
    	FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    	ArrPezzi = split(FileBinario,FirmaFile)
    
    	for item = 1 to ubound(ArrPezzi)-1
    		Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    		Intestazione = left(ArrPezzi(item),Inizio-1)
    		Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    	    	ContenutoFile =  mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    
    		' Recupero i campi se sono compilati
    
    		if instr(Intestazione,"tipo") > 0 then
    			testo1 = ContenutoFile1
    		end if
    
    		if instr(Intestazione,"testo2") > 0 then
             		testo2 = ContenutoFile2
            	end if
    	
    		if instr(Intestazione,"testo3") > 0 then
    			testo3 = ContenutoFile3
    		end if		
    
    		'Qui recupero il file da uploadare (se presente) e lo scrivo sul server
    
    		if instr(Intestazione,"foto") > 0 then
    		    i = instr(Intestazione,"filename=")
    			j = instr(i + 10,Intestazione,chr(34))
    			NomeUpload = mid(Intestazione,i + 10,j-i-10)
    			i = instrRev(NomeUpload,"\")
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
          		if i<>0 then
    				Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload1 = True
    				DimensioneFile1 = len(ContenutoFile)
    				EstensioneFile1 = right(ContenutoFile,3)
    				NomeFile1 = NomeFile
        			Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
        			textStream.Write ContenutoFile
        			textStream.Close
        			Set textStream = Nothing
    	   			Set FSO = Nothing
        	   end if
    		end if
    
        	next
    
    End if
    %>
    ..: Serie A :..
    ..: FORZA PALERMOOOOoooo.....

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    A parte questo:

    codice:
    		if instr(Intestazione,"testo1") > 0 then
    			testo1 = ContenutoFile
    		end if
    
    		if instr(Intestazione,"testo2") > 0 then
             		testo2 = ContenutoFile
            	end if
    	
    		if instr(Intestazione,"testo3") > 0 then
    			testo3 = ContenutoFile
    		end if
    il resto è corretto.
    Il file finisce (credo) nella cartella public.
    Ora devi crearti la connessione ed inserire i 4 valori in 4 campi.

    Roby

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    PS: cambia la tua firma in modo che sia meno offensiva o la faccio togliere io.

    Roby

  8. #8
    ok levo lo St.......zzz

    mi da errore qui:


    codice:
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)

    codice:
    - - - - - - - - 
    Microsoft VBScript runtime error '800a0046' 
    
    Permission denied 
    
    /public/upload.asp, line 65
    e poi li vedi i - - - - - - - -
    qui ci sono
    codice:
    response.write (testo1)
    response.write(" - ")
    response.write (testo2)
    response.write(" - ")
    response.write (testo3)
    ..: Serie A :..
    ..: FORZA PALERMOOOOoooo.....

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non hai i permessi di scrittura nella cartella public.
    Hai cambiato l'latro pezzo di codice?

    Roby

  10. #10
    i permessi li ho non ci sono problemi... (spazio da ARUBA)

    ricapitaliamo un po il tutto altrimenti non capisco niente:


    form.htm

    codice:
    <form action="upload.asp" method="post" enctype="multipart/form-data">
    Cognome<input type="text" name="testo1" size="20">
    
    
    Nome<input type="text" name="testo2" size="20"></p>
    
    
    Citta<input type="text" name="testo3" size="20"></p>
    
    
    foto:<input type="file" name="foto" size="20"> 
    
    
    
    <input type="submit" value="   Invia   "> </p>
    </form>

    upload.asp

    codice:
    <%
    'Questa variabile setta il percorso di dove effettuare l'upolad
    'la cartella non puo non esistere lo script non la crea ! ! !
    
    percorso = "/public"
    
    ByteRicevuti = Request.TotalBytes
    
    if ByteRicevuti > 0 then
    	DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    	For i = 1 To lenB(DatiRicevuti)
    		FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    	Next
    	FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    	ArrPezzi = split(FileBinario,FirmaFile)
    
    	for item = 1 to ubound(ArrPezzi)-1
    		Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    		Intestazione = left(ArrPezzi(item),Inizio-1)
    		Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    	    	ContenutoFile =  mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    
    		' Recupero i campi se sono compilati
    
    		if instr(Intestazione,"testo1") > 0 then
    			testo1 = ContenutoFile1
    		end if
    
    		if instr(Intestazione,"testo2") > 0 then
             		testo2 = ContenutoFile2
            	end if
    	
    		if instr(Intestazione,"testo3") > 0 then
    			testo3 = ContenutoFile3
    		end if		
    
    
    
    response.write (testo1)
    response.write(" - ")
    response.write (testo2)
    response.write(" - ")
    response.write (testo3)
    
    
    
    		'Qui recupero il file da uploadare (se presente) e lo scrivo sul server
    
    		if instr(Intestazione,"foto") > 0 then
    		    i = instr(Intestazione,"filename=")
    			j = instr(i + 10,Intestazione,chr(34))
    			NomeUpload = mid(Intestazione,i + 10,j-i-10)
    			i = instrRev(NomeUpload,"\")
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
          		if i<>0 then
    				Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload1 = True
    				DimensioneFile1 = len(ContenutoFile)
    				EstensioneFile1 = right(ContenutoFile,3)
    				NomeFile1 = NomeFile
        			Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
        			textStream.Write ContenutoFile
        			textStream.Close
        			Set textStream = Nothing
    	   			Set FSO = Nothing
        	   end if
    		end if
    
        	next
    
    End if
    
    response.write (ContenutoFile1)
    response.write(" - ")
    response.write (ContenutoFile2)
    response.write(" - ")
    response.write (ContenutoFile2)
    response.write(" - ")
    response.write (nomefile)
    %>
    ..: Serie A :..
    ..: FORZA PALERMOOOOoooo.....

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.